Commit 0851c9d3 authored by Ilia Kats's avatar Ilia Kats Committed by Christoph Cullmann
Browse files

improve completion scraping

- handle multiple LaTeX commands for the same symbol
- handle non-letters in LaTeX commands (e.g. for superscript/subscript)
parent f5a1cc55
......@@ -15,9 +15,6 @@
#include <KTextEditor/Document>
#include <KTextEditor/View>
static const QRegularExpression latexexpr(QStringLiteral("\\\\:?[\\w]+:?$"),
QRegularExpression::DontCaptureOption); // no unicode here, LaTeX expressions are ASCII only
LatexCompletionModel::LatexCompletionModel(QObject *parent)
: KTextEditor::CodeCompletionModel(parent)
{
......
#include <QRegularExpression>
#include <QString>
#include <tsl/htrie_map.h>
struct Completion {
......@@ -49,16 +50,26 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:anguished:", {QStringLiteral("U+1F627"), QStringLiteral(u"😧"), QStringLiteral("Anguished Face")}},
{"\\:ant:", {QStringLiteral("U+1F41C"), QStringLiteral(u"🐜"), QStringLiteral("Ant")}},
{"\\:apple:", {QStringLiteral("U+1F34E"), QStringLiteral(u"🍎"), QStringLiteral("Red Apple")}},
{"\\:aquarius:", {QStringLiteral("U+02652"), QStringLiteral(u"♒"), QStringLiteral("Aquarius")}},
{"\\:aries:", {QStringLiteral("U+02648"), QStringLiteral(u"♈"), QStringLiteral("Aries")}},
{"\\:arrow_backward:", {QStringLiteral("U+025C0"), QStringLiteral(u"◀"), QStringLiteral("Black Left-Pointing Triangle / Black Left Pointing Triangle")}},
{"\\:arrow_double_down:", {QStringLiteral("U+023EC"), QStringLiteral(u"⏬"), QStringLiteral("Black Down-Pointing Double Triangle")}},
{"\\:arrow_double_up:", {QStringLiteral("U+023EB"), QStringLiteral(u"⏫"), QStringLiteral("Black Up-Pointing Double Triangle")}},
{"\\:arrow_down:", {QStringLiteral("U+02B07"), QStringLiteral(u"⬇"), QStringLiteral("Downwards Black Arrow")}},
{"\\:arrow_down_small:", {QStringLiteral("U+1F53D"), QStringLiteral(u"🔽"), QStringLiteral("Down-Pointing Small Red Triangle")}},
{"\\:arrow_forward:", {QStringLiteral("U+025B6"), QStringLiteral(u"▶"), QStringLiteral("Black Right-Pointing Triangle / Black Right Pointing Triangle")}},
{"\\:arrow_heading_down:", {QStringLiteral("U+02935"), QStringLiteral(u"⤵"), QStringLiteral("Arrow Pointing Rightwards Then Curving Downwards")}},
{"\\:arrow_heading_up:", {QStringLiteral("U+02934"), QStringLiteral(u"⤴"), QStringLiteral("Arrow Pointing Rightwards Then Curving Upwards")}},
{"\\:arrow_left:", {QStringLiteral("U+02B05"), QStringLiteral(u"⬅"), QStringLiteral("Leftwards Black Arrow")}},
{"\\:arrow_lower_left:", {QStringLiteral("U+02199"), QStringLiteral(u"↙"), QStringLiteral("South West Arrow / Lower Left Arrow")}},
{"\\:arrow_lower_right:", {QStringLiteral("U+02198"), QStringLiteral(u"↘"), QStringLiteral("South East Arrow / Lower Right Arrow")}},
{"\\:arrow_right:", {QStringLiteral("U+027A1"), QStringLiteral(u"➡"), QStringLiteral("Black Rightwards Arrow / Black Right Arrow")}},
{"\\:arrow_right_hook:", {QStringLiteral("U+021AA"), QStringLiteral(u"↪"), QStringLiteral("Rightwards Arrow With Hook / Right Arrow With Hook")}},
{"\\:arrow_up:", {QStringLiteral("U+02B06"), QStringLiteral(u"⬆"), QStringLiteral("Upwards Black Arrow")}},
{"\\:arrow_up_down:", {QStringLiteral("U+02195"), QStringLiteral(u"↕"), QStringLiteral("Up Down Arrow")}},
{"\\:arrow_up_small:", {QStringLiteral("U+1F53C"), QStringLiteral(u"🔼"), QStringLiteral("Up-Pointing Small Red Triangle")}},
{"\\:arrow_upper_left:", {QStringLiteral("U+02196"), QStringLiteral(u"↖"), QStringLiteral("North West Arrow / Upper Left Arrow")}},
{"\\:arrow_upper_right:", {QStringLiteral("U+02197"), QStringLiteral(u"↗"), QStringLiteral("North East Arrow / Upper Right Arrow")}},
{"\\:arrows_clockwise:", {QStringLiteral("U+1F503"), QStringLiteral(u"🔃"), QStringLiteral("Clockwise Downwards And Upwards Open Circle Arrows")}},
{"\\:arrows_counterclockwise:",
{QStringLiteral("U+1F504"), QStringLiteral(u"🔄"), QStringLiteral("Anticlockwise Downwards And Upwards Open Circle Arrows")}},
......@@ -100,8 +111,13 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:bikini:", {QStringLiteral("U+1F459"), QStringLiteral(u"👙"), QStringLiteral("Bikini")}},
{"\\:bird:", {QStringLiteral("U+1F426"), QStringLiteral(u"🐦"), QStringLiteral("Bird")}},
{"\\:birthday:", {QStringLiteral("U+1F382"), QStringLiteral(u"🎂"), QStringLiteral("Birthday Cake")}},
{"\\:black_circle:", {QStringLiteral("U+026AB"), QStringLiteral(u"⚫"), QStringLiteral("Medium Black Circle")}},
{"\\:black_joker:", {QStringLiteral("U+1F0CF"), QStringLiteral(u"🃏"), QStringLiteral("Playing Card Black Joker")}},
{"\\:black_large_square:", {QStringLiteral("U+02B1B"), QStringLiteral(u"⬛"), QStringLiteral("Black Large Square")}},
{"\\:black_medium_small_square:", {QStringLiteral("U+025FE"), QStringLiteral(u"◾"), QStringLiteral("Black Medium Small Square")}},
{"\\:black_medium_square:", {QStringLiteral("U+025FC"), QStringLiteral(u"◼"), QStringLiteral("Black Medium Square")}},
{"\\:black_nib:", {QStringLiteral("U+02712"), QStringLiteral(u"✒"), QStringLiteral("Black Nib")}},
{"\\:black_small_square:", {QStringLiteral("U+025AA"), QStringLiteral(u"▪"), QStringLiteral("Black Small Square")}},
{"\\:black_square_button:", {QStringLiteral("U+1F532"), QStringLiteral(u"🔲"), QStringLiteral("Black Square Button")}},
{"\\:blossom:", {QStringLiteral("U+1F33C"), QStringLiteral(u"🌼"), QStringLiteral("Blossom")}},
{"\\:blowfish:", {QStringLiteral("U+1F421"), QStringLiteral(u"🐡"), QStringLiteral("Blowfish")}},
......@@ -141,8 +157,10 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:calling:", {QStringLiteral("U+1F4F2"), QStringLiteral(u"📲"), QStringLiteral("Mobile Phone With Rightwards Arrow At Left")}},
{"\\:camel:", {QStringLiteral("U+1F42B"), QStringLiteral(u"🐫"), QStringLiteral("Bactrian Camel")}},
{"\\:camera:", {QStringLiteral("U+1F4F7"), QStringLiteral(u"📷"), QStringLiteral("Camera")}},
{"\\:cancer:", {QStringLiteral("U+0264B"), QStringLiteral(u"♋"), QStringLiteral("Cancer")}},
{"\\:candy:", {QStringLiteral("U+1F36C"), QStringLiteral(u"🍬"), QStringLiteral("Candy")}},
{"\\:capital_abcd:", {QStringLiteral("U+1F520"), QStringLiteral(u"🔠"), QStringLiteral("Input Symbol For Latin Capital Letters")}},
{"\\:capricorn:", {QStringLiteral("U+02651"), QStringLiteral(u"♑"), QStringLiteral("Capricorn")}},
{"\\:car:", {QStringLiteral("U+1F697"), QStringLiteral(u"🚗"), QStringLiteral("Automobile")}},
{"\\:card_index:", {QStringLiteral("U+1F4C7"), QStringLiteral(u"📇"), QStringLiteral("Card Index")}},
{"\\:carousel_horse:", {QStringLiteral("U+1F3A0"), QStringLiteral(u"🎠"), QStringLiteral("Carousel Horse")}},
......@@ -197,6 +215,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:closed_lock_with_key:", {QStringLiteral("U+1F510"), QStringLiteral(u"🔐"), QStringLiteral("Closed Lock With Key")}},
{"\\:closed_umbrella:", {QStringLiteral("U+1F302"), QStringLiteral(u"🌂"), QStringLiteral("Closed Umbrella")}},
{"\\:cloud:", {QStringLiteral("U+02601"), QStringLiteral(u"☁"), QStringLiteral("Cloud")}},
{"\\:clubs:", {QStringLiteral("U+02663"), QStringLiteral(u"♣"), QStringLiteral("Black Club Suit")}},
{"\\:cocktail:", {QStringLiteral("U+1F378"), QStringLiteral(u"🍸"), QStringLiteral("Cocktail Glass")}},
{"\\:coffee:", {QStringLiteral("U+02615"), QStringLiteral(u"☕"), QStringLiteral("Hot Beverage")}},
{"\\:cold_sweat:", {QStringLiteral("U+1F630"), QStringLiteral(u"😰"), QStringLiteral("Face With Open Mouth And Cold Sweat")}},
......@@ -211,6 +230,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:cookie:", {QStringLiteral("U+1F36A"), QStringLiteral(u"🍪"), QStringLiteral("Cookie")}},
{"\\:cool:", {QStringLiteral("U+1F192"), QStringLiteral(u"🆒"), QStringLiteral("Squared Cool")}},
{"\\:cop:", {QStringLiteral("U+1F46E"), QStringLiteral(u"👮"), QStringLiteral("Police Officer")}},
{"\\:copyright:", {QStringLiteral("U+000A9"), QStringLiteral(u"©"), QStringLiteral("Copyright Sign")}},
{"\\:corn:", {QStringLiteral("U+1F33D"), QStringLiteral(u"🌽"), QStringLiteral("Ear Of Maize")}},
{"\\:couple:", {QStringLiteral("U+1F46B"), QStringLiteral(u"👫"), QStringLiteral("Man And Woman Holding Hands")}},
{"\\:couple_with_heart:", {QStringLiteral("U+1F491"), QStringLiteral(u"💑"), QStringLiteral("Couple With Heart")}},
......@@ -241,6 +261,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:deciduous_tree:", {QStringLiteral("U+1F333"), QStringLiteral(u"🌳"), QStringLiteral("Deciduous Tree")}},
{"\\:department_store:", {QStringLiteral("U+1F3EC"), QStringLiteral(u"🏬"), QStringLiteral("Department Store")}},
{"\\:diamond_shape_with_a_dot_inside:", {QStringLiteral("U+1F4A0"), QStringLiteral(u"💠"), QStringLiteral("Diamond Shape With A Dot Inside")}},
{"\\:diamonds:", {QStringLiteral("U+02666"), QStringLiteral(u"♦"), QStringLiteral("Black Diamond Suit")}},
{"\\:disappointed:", {QStringLiteral("U+1F61E"), QStringLiteral(u"😞"), QStringLiteral("Disappointed Face")}},
{"\\:disappointed_relieved:", {QStringLiteral("U+1F625"), QStringLiteral(u"😥"), QStringLiteral("Disappointed But Relieved Face")}},
{"\\:dizzy:", {QStringLiteral("U+1F4AB"), QStringLiteral(u"💫"), QStringLiteral("Dizzy Symbol")}},
......@@ -322,6 +343,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:full_moon_with_face:", {QStringLiteral("U+1F31D"), QStringLiteral(u"🌝"), QStringLiteral("Full Moon With Face")}},
{"\\:game_die:", {QStringLiteral("U+1F3B2"), QStringLiteral(u"🎲"), QStringLiteral("Game Die")}},
{"\\:gem:", {QStringLiteral("U+1F48E"), QStringLiteral(u"💎"), QStringLiteral("Gem Stone")}},
{"\\:gemini:", {QStringLiteral("U+0264A"), QStringLiteral(u"♊"), QStringLiteral("Gemini")}},
{"\\:ghost:", {QStringLiteral("U+1F47B"), QStringLiteral(u"👻"), QStringLiteral("Ghost")}},
{"\\:gift:", {QStringLiteral("U+1F381"), QStringLiteral(u"🎁"), QStringLiteral("Wrapped Present")}},
{"\\:gift_heart:", {QStringLiteral("U+1F49D"), QStringLiteral(u"💝"), QStringLiteral("Heart With Ribbon")}},
......@@ -358,6 +380,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:heart_eyes_cat:", {QStringLiteral("U+1F63B"), QStringLiteral(u"😻"), QStringLiteral("Smiling Cat Face With Heart-Shaped Eyes")}},
{"\\:heartbeat:", {QStringLiteral("U+1F493"), QStringLiteral(u"💓"), QStringLiteral("Beating Heart")}},
{"\\:heartpulse:", {QStringLiteral("U+1F497"), QStringLiteral(u"💗"), QStringLiteral("Growing Heart")}},
{"\\:hearts:", {QStringLiteral("U+02665"), QStringLiteral(u"♥"), QStringLiteral("Black Heart Suit")}},
{"\\:heavy_check_mark:", {QStringLiteral("U+02714"), QStringLiteral(u"✔"), QStringLiteral("Heavy Check Mark")}},
{"\\:heavy_division_sign:", {QStringLiteral("U+02797"), QStringLiteral(u"➗"), QStringLiteral("Heavy Division Sign")}},
{"\\:heavy_dollar_sign:", {QStringLiteral("U+1F4B2"), QStringLiteral(u"💲"), QStringLiteral("Heavy Dollar Sign")}},
......@@ -422,8 +445,12 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:leaves:", {QStringLiteral("U+1F343"), QStringLiteral(u"🍃"), QStringLiteral("Leaf Fluttering In Wind")}},
{"\\:ledger:", {QStringLiteral("U+1F4D2"), QStringLiteral(u"📒"), QStringLiteral("Ledger")}},
{"\\:left_luggage:", {QStringLiteral("U+1F6C5"), QStringLiteral(u"🛅"), QStringLiteral("Left Luggage")}},
{"\\:left_right_arrow:", {QStringLiteral("U+02194"), QStringLiteral(u"↔"), QStringLiteral("Left Right Arrow")}},
{"\\:leftwards_arrow_with_hook:", {QStringLiteral("U+021A9"), QStringLiteral(u"↩"), QStringLiteral("Leftwards Arrow With Hook / Left Arrow With Hook")}},
{"\\:lemon:", {QStringLiteral("U+1F34B"), QStringLiteral(u"🍋"), QStringLiteral("Lemon")}},
{"\\:leo:", {QStringLiteral("U+0264C"), QStringLiteral(u"♌"), QStringLiteral("Leo")}},
{"\\:leopard:", {QStringLiteral("U+1F406"), QStringLiteral(u"🐆"), QStringLiteral("Leopard")}},
{"\\:libra:", {QStringLiteral("U+0264E"), QStringLiteral(u"♎"), QStringLiteral("Libra")}},
{"\\:light_rail:", {QStringLiteral("U+1F688"), QStringLiteral(u"🚈"), QStringLiteral("Light Rail")}},
{"\\:link:", {QStringLiteral("U+1F517"), QStringLiteral(u"🔗"), QStringLiteral("Link Symbol")}},
{"\\:lips:", {QStringLiteral("U+1F444"), QStringLiteral(u"👄"), QStringLiteral("Mouth")}},
......@@ -561,6 +588,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:pig_nose:", {QStringLiteral("U+1F43D"), QStringLiteral(u"🐽"), QStringLiteral("Pig Nose")}},
{"\\:pill:", {QStringLiteral("U+1F48A"), QStringLiteral(u"💊"), QStringLiteral("Pill")}},
{"\\:pineapple:", {QStringLiteral("U+1F34D"), QStringLiteral(u"🍍"), QStringLiteral("Pineapple")}},
{"\\:pisces:", {QStringLiteral("U+02653"), QStringLiteral(u"♓"), QStringLiteral("Pisces")}},
{"\\:pizza:", {QStringLiteral("U+1F355"), QStringLiteral(u"🍕"), QStringLiteral("Slice Of Pizza")}},
{"\\:point_down:", {QStringLiteral("U+1F447"), QStringLiteral(u"👇"), QStringLiteral("White Down Pointing Backhand Index")}},
{"\\:point_left:", {QStringLiteral("U+1F448"), QStringLiteral(u"👈"), QStringLiteral("White Left Pointing Backhand Index")}},
......@@ -599,6 +627,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:rat:", {QStringLiteral("U+1F400"), QStringLiteral(u"🐀"), QStringLiteral("Rat")}},
{"\\:recycle:", {QStringLiteral("U+0267B"), QStringLiteral(u"♻"), QStringLiteral("Black Universal Recycling Symbol")}},
{"\\:red_circle:", {QStringLiteral("U+1F534"), QStringLiteral(u"🔴"), QStringLiteral("Large Red Circle")}},
{"\\:registered:", {QStringLiteral("U+000AE"), QStringLiteral(u"®"), QStringLiteral("Registered Sign / Registered Trade Mark Sign")}},
{"\\:relaxed:", {QStringLiteral("U+0263A"), QStringLiteral(u"☺"), QStringLiteral("White Smiling Face")}},
{"\\:relieved:", {QStringLiteral("U+1F60C"), QStringLiteral(u"😌"), QStringLiteral("Relieved Face")}},
{"\\:repeat:", {QStringLiteral("U+1F501"), QStringLiteral(u"🔁"), QStringLiteral("Clockwise Rightwards And Leftwards Open Circle Arrows")}},
......@@ -624,6 +653,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:runner:", {QStringLiteral("U+1F3C3"), QStringLiteral(u"🏃"), QStringLiteral("Runner")}},
{"\\:running_shirt_with_sash:", {QStringLiteral("U+1F3BD"), QStringLiteral(u"🎽"), QStringLiteral("Running Shirt With Sash")}},
{"\\:sa:", {QStringLiteral("U+1F202"), QStringLiteral(u"🈂"), QStringLiteral("Squared Katakana Sa")}},
{"\\:sagittarius:", {QStringLiteral("U+02650"), QStringLiteral(u"♐"), QStringLiteral("Sagittarius")}},
{"\\:sake:", {QStringLiteral("U+1F376"), QStringLiteral(u"🍶"), QStringLiteral("Sake Bottle And Cup")}},
{"\\:sandal:", {QStringLiteral("U+1F461"), QStringLiteral(u"👡"), QStringLiteral("Womans Sandal")}},
{"\\:santa:", {QStringLiteral("U+1F385"), QStringLiteral(u"🎅"), QStringLiteral("Father Christmas")}},
......@@ -632,6 +662,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:school:", {QStringLiteral("U+1F3EB"), QStringLiteral(u"🏫"), QStringLiteral("School")}},
{"\\:school_satchel:", {QStringLiteral("U+1F392"), QStringLiteral(u"🎒"), QStringLiteral("School Satchel")}},
{"\\:scissors:", {QStringLiteral("U+02702"), QStringLiteral(u"✂"), QStringLiteral("Black Scissors")}},
{"\\:scorpius:", {QStringLiteral("U+0264F"), QStringLiteral(u"♏"), QStringLiteral("Scorpius")}},
{"\\:scream:", {QStringLiteral("U+1F631"), QStringLiteral(u"😱"), QStringLiteral("Face Screaming In Fear")}},
{"\\:scream_cat:", {QStringLiteral("U+1F640"), QStringLiteral(u"🙀"), QStringLiteral("Weary Cat Face")}},
{"\\:scroll:", {QStringLiteral("U+1F4DC"), QStringLiteral(u"📜"), QStringLiteral("Scroll")}},
......@@ -680,6 +711,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:sos:", {QStringLiteral("U+1F198"), QStringLiteral(u"🆘"), QStringLiteral("Squared Sos")}},
{"\\:sound:", {QStringLiteral("U+1F509"), QStringLiteral(u"🔉"), QStringLiteral("Speaker With One Sound Wave")}},
{"\\:space_invader:", {QStringLiteral("U+1F47E"), QStringLiteral(u"👾"), QStringLiteral("Alien Monster")}},
{"\\:spades:", {QStringLiteral("U+02660"), QStringLiteral(u"♠"), QStringLiteral("Black Spade Suit")}},
{"\\:spaghetti:", {QStringLiteral("U+1F35D"), QStringLiteral(u"🍝"), QStringLiteral("Spaghetti")}},
{"\\:sparkle:", {QStringLiteral("U+02747"), QStringLiteral(u"❇"), QStringLiteral("Sparkle")}},
{"\\:sparkler:", {QStringLiteral("U+1F387"), QStringLiteral(u"🎇"), QStringLiteral("Firework Sparkler")}},
......@@ -690,6 +722,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:speech_balloon:", {QStringLiteral("U+1F4AC"), QStringLiteral(u"💬"), QStringLiteral("Speech Balloon")}},
{"\\:speedboat:", {QStringLiteral("U+1F6A4"), QStringLiteral(u"🚤"), QStringLiteral("Speedboat")}},
{"\\:star2:", {QStringLiteral("U+1F31F"), QStringLiteral(u"🌟"), QStringLiteral("Glowing Star")}},
{"\\:star:", {QStringLiteral("U+02B50"), QStringLiteral(u"⭐"), QStringLiteral("White Medium Star")}},
{"\\:stars:", {QStringLiteral("U+1F320"), QStringLiteral(u"🌠"), QStringLiteral("Shooting Star")}},
{"\\:station:", {QStringLiteral("U+1F689"), QStringLiteral(u"🚉"), QStringLiteral("Station")}},
{"\\:statue_of_liberty:", {QStringLiteral("U+1F5FD"), QStringLiteral(u"🗽"), QStringLiteral("Statue Of Liberty")}},
......@@ -720,6 +753,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:tada:", {QStringLiteral("U+1F389"), QStringLiteral(u"🎉"), QStringLiteral("Party Popper")}},
{"\\:tanabata_tree:", {QStringLiteral("U+1F38B"), QStringLiteral(u"🎋"), QStringLiteral("Tanabata Tree")}},
{"\\:tangerine:", {QStringLiteral("U+1F34A"), QStringLiteral(u"🍊"), QStringLiteral("Tangerine")}},
{"\\:taurus:", {QStringLiteral("U+02649"), QStringLiteral(u"♉"), QStringLiteral("Taurus")}},
{"\\:taxi:", {QStringLiteral("U+1F695"), QStringLiteral(u"🚕"), QStringLiteral("Taxi")}},
{"\\:tea:", {QStringLiteral("U+1F375"), QStringLiteral(u"🍵"), QStringLiteral("Teacup Without Handle")}},
{"\\:telephone_receiver:", {QStringLiteral("U+1F4DE"), QStringLiteral(u"📞"), QStringLiteral("Telephone Receiver")}},
......@@ -731,6 +765,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:tiger2:", {QStringLiteral("U+1F405"), QStringLiteral(u"🐅"), QStringLiteral("Tiger")}},
{"\\:tiger:", {QStringLiteral("U+1F42F"), QStringLiteral(u"🐯"), QStringLiteral("Tiger Face")}},
{"\\:tired_face:", {QStringLiteral("U+1F62B"), QStringLiteral(u"😫"), QStringLiteral("Tired Face")}},
{"\\:tm:", {QStringLiteral("U+02122"), QStringLiteral(u"™"), QStringLiteral("Trade Mark Sign / Trademark")}},
{"\\:toilet:", {QStringLiteral("U+1F6BD"), QStringLiteral(u"🚽"), QStringLiteral("Toilet")}},
{"\\:tokyo_tower:", {QStringLiteral("U+1F5FC"), QStringLiteral(u"🗼"), QStringLiteral("Tokyo Tower")}},
{"\\:tomato:", {QStringLiteral("U+1F345"), QStringLiteral(u"🍅"), QStringLiteral("Tomato")}},
......@@ -782,6 +817,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:video_camera:", {QStringLiteral("U+1F4F9"), QStringLiteral(u"📹"), QStringLiteral("Video Camera")}},
{"\\:video_game:", {QStringLiteral("U+1F3AE"), QStringLiteral(u"🎮"), QStringLiteral("Video Game")}},
{"\\:violin:", {QStringLiteral("U+1F3BB"), QStringLiteral(u"🎻"), QStringLiteral("Violin")}},
{"\\:virgo:", {QStringLiteral("U+0264D"), QStringLiteral(u"♍"), QStringLiteral("Virgo")}},
{"\\:volcano:", {QStringLiteral("U+1F30B"), QStringLiteral(u"🌋"), QStringLiteral("Volcano")}},
{"\\:vs:", {QStringLiteral("U+1F19A"), QStringLiteral(u"🆚"), QStringLiteral("Squared Vs")}},
{"\\:walking:", {QStringLiteral("U+1F6B6"), QStringLiteral(u"🚶"), QStringLiteral("Pedestrian")}},
......@@ -801,7 +837,12 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\:whale:", {QStringLiteral("U+1F433"), QStringLiteral(u"🐳"), QStringLiteral("Spouting Whale")}},
{"\\:wheelchair:", {QStringLiteral("U+0267F"), QStringLiteral(u"♿"), QStringLiteral("Wheelchair Symbol")}},
{"\\:white_check_mark:", {QStringLiteral("U+02705"), QStringLiteral(u"✅"), QStringLiteral("White Heavy Check Mark")}},
{"\\:white_circle:", {QStringLiteral("U+026AA"), QStringLiteral(u"⚪"), QStringLiteral("Medium White Circle")}},
{"\\:white_flower:", {QStringLiteral("U+1F4AE"), QStringLiteral(u"💮"), QStringLiteral("White Flower")}},
{"\\:white_large_square:", {QStringLiteral("U+02B1C"), QStringLiteral(u"⬜"), QStringLiteral("White Large Square")}},
{"\\:white_medium_small_square:", {QStringLiteral("U+025FD"), QStringLiteral(u"◽"), QStringLiteral("White Medium Small Square")}},
{"\\:white_medium_square:", {QStringLiteral("U+025FB"), QStringLiteral(u"◻"), QStringLiteral("White Medium Square")}},
{"\\:white_small_square:", {QStringLiteral("U+025AB"), QStringLiteral(u"▫"), QStringLiteral("White Small Square")}},
{"\\:white_square_button:", {QStringLiteral("U+1F533"), QStringLiteral(u"🔳"), QStringLiteral("White Square Button")}},
{"\\:wind_chime:", {QStringLiteral("U+1F390"), QStringLiteral(u"🎐"), QStringLiteral("Wind Chime")}},
{"\\:wine_glass:", {QStringLiteral("U+1F377"), QStringLiteral(u"🍷"), QStringLiteral("Wine Glass")}},
......@@ -860,7 +901,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\H", {QStringLiteral("U+0030B"), QStringLiteral(u" ̋ "), QStringLiteral("Combining Double Acute Accent / Non-Spacing Double Acute")}},
{"\\Im", {QStringLiteral("U+02111"), QStringLiteral(u"ℑ"), QStringLiteral("Black-Letter Capital I / Black-Letter I")}},
{"\\Iota", {QStringLiteral("U+00399"), QStringLiteral(u"Ι"), QStringLiteral("Greek Capital Letter Iota")}},
{"\\Join, \\join", {QStringLiteral("U+02A1D"), QStringLiteral(u"⨝"), QStringLiteral("Join")}},
{"\\Join", {QStringLiteral("U+02A1D"), QStringLiteral(u"⨝"), QStringLiteral("Join")}},
{"\\Kappa", {QStringLiteral("U+0039A"), QStringLiteral(u"Κ"), QStringLiteral("Greek Capital Letter Kappa")}},
{"\\Koppa", {QStringLiteral("U+003DE"), QStringLiteral(u"Ϟ"), QStringLiteral("Greek Letter Koppa / Greek Capital Letter Koppa")}},
{"\\L", {QStringLiteral("U+00141"), QStringLiteral(u"Ł"), QStringLiteral("Latin Capital Letter L With Stroke / Latin Capital Letter L Slash")}},
......@@ -880,9 +921,11 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\Leftarrow", {QStringLiteral("U+021D0"), QStringLiteral(u"⇐"), QStringLiteral("Leftwards Double Arrow / Left Double Arrow")}},
{"\\Leftrightarrow", {QStringLiteral("U+021D4"), QStringLiteral(u"⇔"), QStringLiteral("Left Right Double Arrow")}},
{"\\Lleftarrow", {QStringLiteral("U+021DA"), QStringLiteral(u"⇚"), QStringLiteral("Leftwards Triple Arrow / Left Triple Arrow")}},
{"\\Longleftrightarrow, \\iff", {QStringLiteral("U+027FA"), QStringLiteral(u"⟺"), QStringLiteral("Long Left Right Double Arrow")}},
{"\\Longleftarrow", {QStringLiteral("U+027F8"), QStringLiteral(u"⟸"), QStringLiteral("Long Leftwards Double Arrow")}},
{"\\Longleftrightarrow", {QStringLiteral("U+027FA"), QStringLiteral(u"⟺"), QStringLiteral("Long Left Right Double Arrow")}},
{"\\Longmapsfrom", {QStringLiteral("U+027FD"), QStringLiteral(u"⟽"), QStringLiteral("Long Leftwards Double Arrow From Bar")}},
{"\\Longmapsto", {QStringLiteral("U+027FE"), QStringLiteral(u"⟾"), QStringLiteral("Long Rightwards Double Arrow From Bar")}},
{"\\Longrightarrow", {QStringLiteral("U+027F9"), QStringLiteral(u"⟹"), QStringLiteral("Long Rightwards Double Arrow")}},
{"\\Lsh", {QStringLiteral("U+021B0"), QStringLiteral(u"↰"), QStringLiteral("Upwards Arrow With Tip Leftwards / Up Arrow With Tip Left")}},
{"\\Mapsfrom", {QStringLiteral("U+02906"), QStringLiteral(u"⤆"), QStringLiteral("Leftwards Double Arrow From Bar")}},
{"\\Mapsto", {QStringLiteral("U+02907"), QStringLiteral(u"⤇"), QStringLiteral("Rightwards Double Arrow From Bar")}},
......@@ -1116,9 +1159,9 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\approxeq", {QStringLiteral("U+0224A"), QStringLiteral(u"≊"), QStringLiteral("Almost Equal Or Equal To")}},
{"\\approxeqq", {QStringLiteral("U+02A70"), QStringLiteral(u"⩰"), QStringLiteral("Approximately Equal Or Equal To")}},
{"\\approxnotequal", {QStringLiteral("U+02246"), QStringLiteral(u"≆"), QStringLiteral("Approximately But Not Actually Equal To")}},
{"\\aquarius, \\:aquarius:", {QStringLiteral("U+02652"), QStringLiteral(u"♒"), QStringLiteral("Aquarius")}},
{"\\aquarius", {QStringLiteral("U+02652"), QStringLiteral(u"♒"), QStringLiteral("Aquarius")}},
{"\\arceq", {QStringLiteral("U+02258"), QStringLiteral(u"≘"), QStringLiteral("Corresponds To")}},
{"\\aries, \\:aries:", {QStringLiteral("U+02648"), QStringLiteral(u"♈"), QStringLiteral("Aries")}},
{"\\aries", {QStringLiteral("U+02648"), QStringLiteral(u"♈"), QStringLiteral("Aries")}},
{"\\ast", {QStringLiteral("U+02217"), QStringLiteral(u"∗"), QStringLiteral("Asterisk Operator")}},
{"\\asteq", {QStringLiteral("U+02A6E"), QStringLiteral(u"⩮"), QStringLiteral("Equals With Asterisk")}},
{"\\asteraccent", {QStringLiteral("U+020F0"), QStringLiteral(u" ⃰ "), QStringLiteral("Combining Asterisk Above")}},
......@@ -1659,9 +1702,8 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{QStringLiteral("U+025B4"), QStringLiteral(u"▴"), QStringLiteral("Black Up-Pointing Small Triangle / Black Up Pointing Small Triangle")}},
{"\\blacktriangledown",
{QStringLiteral("U+025BE"), QStringLiteral(u"▾"), QStringLiteral("Black Down-Pointing Small Triangle / Black Down Pointing Small Triangle")}},
{"\\blacktriangleleft, \\:arrow_backward:",
{QStringLiteral("U+025C0"), QStringLiteral(u"◀"), QStringLiteral("Black Left-Pointing Triangle / Black Left Pointing Triangle")}},
{"\\blacktriangleright, \\:arrow_forward:",
{"\\blacktriangleleft", {QStringLiteral("U+025C0"), QStringLiteral(u"◀"), QStringLiteral("Black Left-Pointing Triangle / Black Left Pointing Triangle")}},
{"\\blacktriangleright",
{QStringLiteral("U+025B6"), QStringLiteral(u"▶"), QStringLiteral("Black Right-Pointing Triangle / Black Right Pointing Triangle")}},
{"\\blanksymbol", {QStringLiteral("U+02422"), QStringLiteral(u"␢"), QStringLiteral("Blank Symbol / Blank")}},
{"\\blkhorzoval", {QStringLiteral("U+02B2C"), QStringLiteral(u"⬬"), QStringLiteral("Black Horizontal Ellipse")}},
......@@ -1872,11 +1914,11 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\bumpeq", {QStringLiteral("U+0224F"), QStringLiteral(u"≏"), QStringLiteral("Difference Between")}},
{"\\bumpeqq", {QStringLiteral("U+02AAE"), QStringLiteral(u"⪮"), QStringLiteral("Equals Sign With Bumpy Above")}},
{"\\c", {QStringLiteral("U+00327"), QStringLiteral(u" ̧ "), QStringLiteral("Combining Cedilla / Non-Spacing Cedilla")}},
{"\\cancer, \\:cancer:", {QStringLiteral("U+0264B"), QStringLiteral(u"♋"), QStringLiteral("Cancer")}},
{"\\cancer", {QStringLiteral("U+0264B"), QStringLiteral(u"♋"), QStringLiteral("Cancer")}},
{"\\candra", {QStringLiteral("U+00310"), QStringLiteral(u" ̐ "), QStringLiteral("Combining Candrabindu / Non-Spacing Candrabindu")}},
{"\\cap", {QStringLiteral("U+02229"), QStringLiteral(u"∩"), QStringLiteral("Intersection")}},
{"\\capdot", {QStringLiteral("U+02A40"), QStringLiteral(u"⩀"), QStringLiteral("Intersection With Dot")}},
{"\\capricornus, \\:capricorn:", {QStringLiteral("U+02651"), QStringLiteral(u"♑"), QStringLiteral("Capricorn")}},
{"\\capricornus", {QStringLiteral("U+02651"), QStringLiteral(u"♑"), QStringLiteral("Capricorn")}},
{"\\capwedge", {QStringLiteral("U+02A44"), QStringLiteral(u"⩄"), QStringLiteral("Intersection With Logical And")}},
{"\\carriagereturn",
{QStringLiteral("U+021B5"), QStringLiteral(u"↵"), QStringLiteral("Downwards Arrow With Corner Leftwards / Down Arrow With Corner Left")}},
......@@ -1891,7 +1933,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\circeq", {QStringLiteral("U+02257"), QStringLiteral(u"≗"), QStringLiteral("Ring Equal To")}},
{"\\circlearrowleft", {QStringLiteral("U+021BA"), QStringLiteral(u"↺"), QStringLiteral("Anticlockwise Open Circle Arrow")}},
{"\\circlearrowright", {QStringLiteral("U+021BB"), QStringLiteral(u"↻"), QStringLiteral("Clockwise Open Circle Arrow")}},
{"\\circledR, \\:registered:", {QStringLiteral("U+000AE"), QStringLiteral(u"®"), QStringLiteral("Registered Sign / Registered Trade Mark Sign")}},
{"\\circledR", {QStringLiteral("U+000AE"), QStringLiteral(u"®"), QStringLiteral("Registered Sign / Registered Trade Mark Sign")}},
{"\\circledS", {QStringLiteral("U+024C8"), QStringLiteral(u"Ⓢ"), QStringLiteral("Circled Latin Capital Letter S")}},
{"\\circledast", {QStringLiteral("U+0229B"), QStringLiteral(u"⊛"), QStringLiteral("Circled Asterisk Operator")}},
{"\\circledbullet", {QStringLiteral("U+029BF"), QStringLiteral(u"⦿"), QStringLiteral("Circled Bullet")}},
......@@ -1921,7 +1963,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\closedvarcap", {QStringLiteral("U+02A4D"), QStringLiteral(u"⩍"), QStringLiteral("Closed Intersection With Serifs")}},
{"\\closedvarcup", {QStringLiteral("U+02A4C"), QStringLiteral(u"⩌"), QStringLiteral("Closed Union With Serifs")}},
{"\\closedvarcupsmashprod", {QStringLiteral("U+02A50"), QStringLiteral(u"⩐"), QStringLiteral("Closed Union With Serifs And Smash Product")}},
{"\\clubsuit, \\:clubs:", {QStringLiteral("U+02663"), QStringLiteral(u"♣"), QStringLiteral("Black Club Suit")}},
{"\\clubsuit", {QStringLiteral("U+02663"), QStringLiteral(u"♣"), QStringLiteral("Black Club Suit")}},
{"\\clwintegral", {QStringLiteral("U+02231"), QStringLiteral(u"∱"), QStringLiteral("Clockwise Integral")}},
{"\\coloneq", {QStringLiteral("U+02254"), QStringLiteral(u"≔"), QStringLiteral("Colon Equals / Colon Equal")}},
{"\\commaminus", {QStringLiteral("U+02A29"), QStringLiteral(u"⨩"), QStringLiteral("Minus Sign With Comma Above")}},
......@@ -1931,7 +1973,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\conictaper", {QStringLiteral("U+02332"), QStringLiteral(u"⌲"), QStringLiteral("Conical Taper")}},
{"\\conjquant", {QStringLiteral("U+02A07"), QStringLiteral(u"⨇"), QStringLiteral("Two Logical And Operator")}},
{"\\coprod", {QStringLiteral("U+02210"), QStringLiteral(u"∐"), QStringLiteral("N-Ary Coproduct")}},
{"\\copyright, \\:copyright:", {QStringLiteral("U+000A9"), QStringLiteral(u"©"), QStringLiteral("Copyright Sign")}},
{"\\copyright", {QStringLiteral("U+000A9"), QStringLiteral(u"©"), QStringLiteral("Copyright Sign")}},
{"\\csub", {QStringLiteral("U+02ACF"), QStringLiteral(u"⫏"), QStringLiteral("Closed Subset")}},
{"\\csube", {QStringLiteral("U+02AD1"), QStringLiteral(u"⫑"), QStringLiteral("Closed Subset Or Equal To")}},
{"\\csup", {QStringLiteral("U+02AD0"), QStringLiteral(u"⫐"), QStringLiteral("Closed Superset")}},
......@@ -1964,8 +2006,9 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\ddotseq", {QStringLiteral("U+02A77"), QStringLiteral(u"⩷"), QStringLiteral("Equals Sign With Two Dots Above And Two Dots Below")}},
{"\\defas", {QStringLiteral("U+029CB"), QStringLiteral(u"⧋"), QStringLiteral("Triangle With Underbar")}},
{"\\degree", {QStringLiteral("U+000B0"), QStringLiteral(u"°"), QStringLiteral("Degree Sign")}},
{"\\del, \\nabla", {QStringLiteral("U+02207"), QStringLiteral(u"∇"), QStringLiteral("Nabla")}},
{"\\del", {QStringLiteral("U+02207"), QStringLiteral(u"∇"), QStringLiteral("Nabla")}},
{"\\delta", {QStringLiteral("U+003B4"), QStringLiteral(u"δ"), QStringLiteral("Greek Small Letter Delta")}},
{"\\dh", {QStringLiteral("U+000F0"), QStringLiteral(u"ð"), QStringLiteral("Latin Small Letter Eth")}},
{"\\diagdown",
{QStringLiteral("U+02572"),
QStringLiteral(u"╲"),
......@@ -2002,7 +2045,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\dotequiv", {QStringLiteral("U+02A67"), QStringLiteral(u"⩧"), QStringLiteral("Identical With Dot Above")}},
{"\\dotminus", {QStringLiteral("U+02238"), QStringLiteral(u"∸"), QStringLiteral("Dot Minus")}},
{"\\dotplus", {QStringLiteral("U+02214"), QStringLiteral(u"∔"), QStringLiteral("Dot Plus")}},
{"\\dots, \\ldots", {QStringLiteral("U+02026"), QStringLiteral(u"…"), QStringLiteral("Horizontal Ellipsis")}},
{"\\dots", {QStringLiteral("U+02026"), QStringLiteral(u"…"), QStringLiteral("Horizontal Ellipsis")}},
{"\\dotsim", {QStringLiteral("U+02A6A"), QStringLiteral(u"⩪"), QStringLiteral("Tilde Operator With Dot Above")}},
{"\\dotsminusdots", {QStringLiteral("U+0223A"), QStringLiteral(u"∺"), QStringLiteral("Geometric Proportion")}},
{"\\dottedcircle", {QStringLiteral("U+025CC"), QStringLiteral(u"◌"), QStringLiteral("Dotted Circle")}},
......@@ -2037,6 +2080,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\ell", {QStringLiteral("U+02113"), QStringLiteral(u"ℓ"), QStringLiteral("Script Small L")}},
{"\\elsdot", {QStringLiteral("U+02A97"), QStringLiteral(u"⪗"), QStringLiteral("Slanted Equal To Or Less-Than With Dot Inside")}},
{"\\emdash", {QStringLiteral("U+02014"), QStringLiteral(u"—"), QStringLiteral("Em Dash")}},
{"\\emptyset", {QStringLiteral("U+02205"), QStringLiteral(u"∅"), QStringLiteral("Empty Set")}},
{"\\emptysetoarr", {QStringLiteral("U+029B3"), QStringLiteral(u"⦳"), QStringLiteral("Empty Set With Right Arrow Above")}},
{"\\emptysetoarrl", {QStringLiteral("U+029B4"), QStringLiteral(u"⦴"), QStringLiteral("Empty Set With Left Arrow Above")}},
{"\\emptysetobar", {QStringLiteral("U+029B1"), QStringLiteral(u"⦱"), QStringLiteral("Empty Set With Overbar")}},
......@@ -2072,7 +2116,8 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\eqvparsl", {QStringLiteral("U+029E5"), QStringLiteral(u"⧥"), QStringLiteral("Identical To And Slanted Parallel")}},
{"\\esh", {QStringLiteral("U+00283"), QStringLiteral(u"ʃ"), QStringLiteral("Latin Small Letter Esh")}},
{"\\eta", {QStringLiteral("U+003B7"), QStringLiteral(u"η"), QStringLiteral("Greek Small Letter Eta")}},
{"\\eth, \\dh", {QStringLiteral("U+000F0"), QStringLiteral(u"ð"), QStringLiteral("Latin Small Letter Eth")}},
{"\\eth", {QStringLiteral("U+000F0"), QStringLiteral(u"ð"), QStringLiteral("Latin Small Letter Eth")}},
{"\\euler", {QStringLiteral("U+0212F"), QStringLiteral(u"ℯ"), QStringLiteral("Script Small E")}},
{"\\eulermascheroni", {QStringLiteral("U+02107"), QStringLiteral(u"ℇ"), QStringLiteral("Euler Constant / Eulers")}},
{"\\euro", {QStringLiteral("U+020AC"), QStringLiteral(u"€"), QStringLiteral("Euro Sign")}},
{"\\exclamdown", {QStringLiteral("U+000A1"), QStringLiteral(u"¡"), QStringLiteral("Inverted Exclamation Mark")}},
......@@ -2080,6 +2125,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\fallingdotseq", {QStringLiteral("U+02252"), QStringLiteral(u"≒"), QStringLiteral("Approximately Equal To Or The Image Of")}},
{"\\fdiagovnearrow", {QStringLiteral("U+0292F"), QStringLiteral(u"⤯"), QStringLiteral("Falling Diagonal Crossing North East Arrow")}},
{"\\fdiagovrdiag", {QStringLiteral("U+0292C"), QStringLiteral(u"⤬"), QStringLiteral("Falling Diagonal Crossing Rising Diagonal")}},
{"\\female", {QStringLiteral("U+02640"), QStringLiteral(u"♀"), QStringLiteral("Female Sign")}},
{"\\fhr", {QStringLiteral("U+0027E"), QStringLiteral(u"ɾ"), QStringLiteral("Latin Small Letter R With Fishhook / Latin Small Letter Fishhook R")}},
{"\\fisheye", {QStringLiteral("U+025C9"), QStringLiteral(u"◉"), QStringLiteral("Fisheye")}},
{"\\flat", {QStringLiteral("U+0266D"), QStringLiteral(u"♭"), QStringLiteral("Music Flat Sign / Flat")}},
......@@ -2142,8 +2188,9 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\frown", {QStringLiteral("U+02322"), QStringLiteral(u"⌢"), QStringLiteral("Frown")}},
{"\\fullouterjoin", {QStringLiteral("U+027D7"), QStringLiteral(u"⟗"), QStringLiteral("Full Outer Join")}},
{"\\gamma", {QStringLiteral("U+003B3"), QStringLiteral(u"γ"), QStringLiteral("Greek Small Letter Gamma")}},
{"\\ge, \\geq", {QStringLiteral("U+02265"), QStringLiteral(u"≥"), QStringLiteral("Greater-Than Or Equal To / Greater Than Or Equal To")}},
{"\\gemini, \\:gemini:", {QStringLiteral("U+0264A"), QStringLiteral(u"♊"), QStringLiteral("Gemini")}},
{"\\ge", {QStringLiteral("U+02265"), QStringLiteral(u"≥"), QStringLiteral("Greater-Than Or Equal To / Greater Than Or Equal To")}},
{"\\gemini", {QStringLiteral("U+0264A"), QStringLiteral(u"♊"), QStringLiteral("Gemini")}},
{"\\geq", {QStringLiteral("U+02265"), QStringLiteral(u"≥"), QStringLiteral("Greater-Than Or Equal To / Greater Than Or Equal To")}},
{"\\geqq", {QStringLiteral("U+02267"), QStringLiteral(u"≧"), QStringLiteral("Greater-Than Over Equal To / Greater Than Over Equal To")}},
{"\\geqqslant", {QStringLiteral("U+02AFA"), QStringLiteral(u"⫺"), QStringLiteral("Double-Line Slanted Greater-Than Or Equal To")}},
{"\\geqslant", {QStringLiteral("U+02A7E"), QStringLiteral(u"⩾"), QStringLiteral("Greater-Than Or Slanted Equal To")}},
......@@ -2197,23 +2244,22 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\hksearow", {QStringLiteral("U+02925"), QStringLiteral(u"⤥"), QStringLiteral("South East Arrow With Hook")}},
{"\\hkswarow", {QStringLiteral("U+02926"), QStringLiteral(u"⤦"), QStringLiteral("South West Arrow With Hook")}},
{"\\hlmrk", {QStringLiteral("U+002D1"), QStringLiteral(u"ˑ"), QStringLiteral("Modifier Letter Half Triangular Colon")}},
{"\\hookleftarrow, \\:leftwards_arrow_with_hook:",
{QStringLiteral("U+021A9"), QStringLiteral(u"↩"), QStringLiteral("Leftwards Arrow With Hook / Left Arrow With Hook")}},
{"\\hookrightarrow, \\:arrow_right_hook:",
{QStringLiteral("U+021AA"), QStringLiteral(u"↪"), QStringLiteral("Rightwards Arrow With Hook / Right Arrow With Hook")}},
{"\\hookleftarrow", {QStringLiteral("U+021A9"), QStringLiteral(u"↩"), QStringLiteral("Leftwards Arrow With Hook / Left Arrow With Hook")}},
{"\\hookrightarrow", {QStringLiteral("U+021AA"), QStringLiteral(u"↪"), QStringLiteral("Rightwards Arrow With Hook / Right Arrow With Hook")}},
{"\\house", {QStringLiteral("U+02302"), QStringLiteral(u"⌂"), QStringLiteral("House")}},
{"\\hrectangle", {QStringLiteral("U+025AD"), QStringLiteral(u"▭"), QStringLiteral("White Rectangle")}},
{"\\hrectangleblack", {QStringLiteral("U+025AC"), QStringLiteral(u"▬"), QStringLiteral("Black Rectangle")}},
{"\\hslash", {QStringLiteral("U+0210F"), QStringLiteral(u"ℏ"), QStringLiteral("Planck Constant Over Two Pi / Planck Constant Over 2 Pi")}},
{"\\hspace", {QStringLiteral("U+0200A"), QStringLiteral(u" "), QStringLiteral("Hair Space")}},
{"\\hvlig", {QStringLiteral("U+00195"), QStringLiteral(u"ƕ"), QStringLiteral("Latin Small Letter Hv / Latin Small Letter H V")}},
{"\\iff", {QStringLiteral("U+027FA"), QStringLiteral(u"⟺"), QStringLiteral("Long Left Right Double Arrow")}},
{"\\iiiint", {QStringLiteral("U+02A0C"), QStringLiteral(u"⨌"), QStringLiteral("Quadruple Integral Operator")}},
{"\\iiint", {QStringLiteral("U+0222D"), QStringLiteral(u"∭"), QStringLiteral("Triple Integral")}},
{"\\iint", {QStringLiteral("U+0222C"), QStringLiteral(u"∬"), QStringLiteral("Double Integral")}},
{"\\image", {QStringLiteral("U+022B7"), QStringLiteral(u"⊷"), QStringLiteral("Image Of")}},
{"\\imath", {QStringLiteral("U+00131"), QStringLiteral(u"ı"), QStringLiteral("Latin Small Letter Dotless I")}},
{"\\impliedby, \\Longleftarrow", {QStringLiteral("U+027F8"), QStringLiteral(u"⟸"), QStringLiteral("Long Leftwards Double Arrow")}},
{"\\implies, \\Longrightarrow", {QStringLiteral("U+027F9"), QStringLiteral(u"⟹"), QStringLiteral("Long Rightwards Double Arrow")}},
{"\\impliedby", {QStringLiteral("U+027F8"), QStringLiteral(u"⟸"), QStringLiteral("Long Leftwards Double Arrow")}},
{"\\implies", {QStringLiteral("U+027F9"), QStringLiteral(u"⟹"), QStringLiteral("Long Rightwards Double Arrow")}},
{"\\in", {QStringLiteral("U+02208"), QStringLiteral(u"∈"), QStringLiteral("Element Of")}},
{"\\increment", {QStringLiteral("U+02206"), QStringLiteral(u"∆"), QStringLiteral("Increment")}},
{"\\infty", {QStringLiteral("U+0221E"), QStringLiteral(u"∞"), QStringLiteral("Infinity")}},
......@@ -2356,7 +2402,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\itf", {QStringLiteral("U+1D453"), QStringLiteral(u"𝑓"), QStringLiteral("Mathematical Italic Small F")}},
{"\\itg", {QStringLiteral("U+1D454"), QStringLiteral(u"𝑔"), QStringLiteral("Mathematical Italic Small G")}},
{"\\itgamma", {QStringLiteral("U+1D6FE"), QStringLiteral(u"𝛾"), QStringLiteral("Mathematical Italic Small Gamma")}},
{"\\ith, \\planck", {QStringLiteral("U+0210E"), QStringLiteral(u"ℎ"), QStringLiteral("Planck Constant")}},
{"\\ith", {QStringLiteral("U+0210E"), QStringLiteral(u"ℎ"), QStringLiteral("Planck Constant")}},
{"\\iti", {QStringLiteral("U+1D456"), QStringLiteral(u"𝑖"), QStringLiteral("Mathematical Italic Small I")}},
{"\\itimath", {QStringLiteral("U+1D6A4"), QStringLiteral(u"𝚤"), QStringLiteral("Mathematical Italic Small Dotless I")}},
{"\\itiota", {QStringLiteral("U+1D704"), QStringLiteral(u"𝜄"), QStringLiteral("Mathematical Italic Small Iota")}},
......@@ -2405,6 +2451,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\itz", {QStringLiteral("U+1D467"), QStringLiteral(u"𝑧"), QStringLiteral("Mathematical Italic Small Z")}},
{"\\itzeta", {QStringLiteral("U+1D701"), QStringLiteral(u"𝜁"), QStringLiteral("Mathematical Italic Small Zeta")}},
{"\\jmath", {QStringLiteral("U+00237"), QStringLiteral(u"ȷ"), QStringLiteral("Latin Small Letter Dotless J")}},
{"\\join", {QStringLiteral("U+02A1D"), QStringLiteral(u"⨝"), QStringLiteral("Join")}},
{"\\jupiter", {QStringLiteral("U+02643"), QStringLiteral(u"♃"), QStringLiteral("Jupiter")}},
{"\\k", {QStringLiteral("U+00328"), QStringLiteral(u" ̨ "), QStringLiteral("Combining Ogonek / Non-Spacing Ogonek")}},
{"\\kappa", {QStringLiteral("U+003BA"), QStringLiteral(u"κ"), QStringLiteral("Greek Small Letter Kappa")}},
......@@ -2416,7 +2463,8 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\late", {QStringLiteral("U+02AAD"), QStringLiteral(u"⪭"), QStringLiteral("Larger Than Or Equal To")}},
{"\\lazysinv", {QStringLiteral("U+0223E"), QStringLiteral(u"∾"), QStringLiteral("Inverted Lazy S")}},
{"\\lceil", {QStringLiteral("U+02308"), QStringLiteral(u"⌈"), QStringLiteral("Left Ceiling")}},
{"\\le, \\leq", {QStringLiteral("U+02264"), QStringLiteral(u"≤"), QStringLiteral("Less-Than Or Equal To / Less Than Or Equal To")}},
{"\\ldots", {QStringLiteral("U+02026"), QStringLiteral(u"…"), QStringLiteral("Horizontal Ellipsis")}},
{"\\le", {QStringLiteral("U+02264"), QStringLiteral(u"≤"), QStringLiteral("Less-Than Or Equal To / Less Than Or Equal To")}},
{"\\leftarrow", {QStringLiteral("U+02190"), QStringLiteral(u"←"), QStringLiteral("Leftwards Arrow / Left Arrow")}},
{"\\leftarrowapprox", {QStringLiteral("U+02B4A"), QStringLiteral(u"⭊"), QStringLiteral("Leftwards Arrow Above Almost Equal To")}},
{"\\leftarrowbackapprox", {QStringLiteral("U+02B42"), QStringLiteral(u"⭂"), QStringLiteral("Leftwards Arrow Above Reverse Almost Equal To")}},
......@@ -2442,7 +2490,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\leftleftarrows", {QStringLiteral("U+021C7"), QStringLiteral(u"⇇"), QStringLiteral("Leftwards Paired Arrows / Left Paired Arrows")}},
{"\\leftmoon", {QStringLiteral("U+0263E"), QStringLiteral(u"☾"), QStringLiteral("Last Quarter Moon")}},
{"\\leftouterjoin", {QStringLiteral("U+027D5"), QStringLiteral(u"⟕"), QStringLiteral("Left Outer Join")}},
{"\\leftrightarrow, \\:left_right_arrow:", {QStringLiteral("U+02194"), QStringLiteral(u"↔"), QStringLiteral("Left Right Arrow")}},
{"\\leftrightarrow", {QStringLiteral("U+02194"), QStringLiteral(u"↔"), QStringLiteral("Left Right Arrow")}},
{"\\leftrightarrowcircle", {QStringLiteral("U+02948"), QStringLiteral(u"⥈"), QStringLiteral("Left Right Arrow Through Small Circle")}},
{"\\leftrightarrows",
{QStringLiteral("U+021C6"), QStringLiteral(u"⇆"), QStringLiteral("Leftwards Arrow Over Rightwards Arrow / Left Arrow Over Right Arrow")}},
......@@ -2461,7 +2509,8 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\leftthreetimes", {QStringLiteral("U+022CB"), QStringLiteral(u"⋋"), QStringLiteral("Left Semidirect Product")}},
{"\\leftwavearrow", {QStringLiteral("U+0219C"), QStringLiteral(u"↜"), QStringLiteral("Leftwards Wave Arrow / Left Wave Arrow")}},
{"\\leftwhitearrow", {QStringLiteral("U+021E6"), QStringLiteral(u"⇦"), QStringLiteral("Leftwards White Arrow / White Left Arrow")}},
{"\\leo, \\:leo:", {QStringLiteral("U+0264C"), QStringLiteral(u"♌"), QStringLiteral("Leo")}},
{"\\leo", {QStringLiteral("U+0264C"), QStringLiteral(u"♌"), QStringLiteral("Leo")}},
{"\\leq", {QStringLiteral("U+02264"), QStringLiteral(u"≤"), QStringLiteral("Less-Than Or Equal To / Less Than Or Equal To")}},
{"\\leqq", {QStringLiteral("U+02266"), QStringLiteral(u"≦"), QStringLiteral("Less-Than Over Equal To / Less Than Over Equal To")}},
{"\\leqqslant", {QStringLiteral("U+02AF9"), QStringLiteral(u"⫹"), QStringLiteral("Double-Line Slanted Less-Than Or Equal To")}},
{"\\leqslant", {QStringLiteral("U+02A7D"), QStringLiteral(u"⩽"), QStringLiteral("Less-Than Or Slanted Equal To")}},
......@@ -2480,15 +2529,15 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\lfloor", {QStringLiteral("U+0230A"), QStringLiteral(u"⌊"), QStringLiteral("Left Floor")}},
{"\\lgE", {QStringLiteral("U+02A91"), QStringLiteral(u"⪑"), QStringLiteral("Less-Than Above Greater-Than Above Double-Line Equal")}},
{"\\lgblkcircle", {QStringLiteral("U+02B24"), QStringLiteral(u"⬤"), QStringLiteral("Black Large Circle")}},
{"\\lgblksquare, \\:black_large_square:", {QStringLiteral("U+02B1B"), QStringLiteral(u"⬛"), QStringLiteral("Black Large Square")}},
{"\\lgblksquare", {QStringLiteral("U+02B1B"), QStringLiteral(u"⬛"), QStringLiteral("Black Large Square")}},
{"\\lgwhtcircle", {QStringLiteral("U+025EF"), QStringLiteral(u"◯"), QStringLiteral("Large Circle")}},
{"\\lgwhtsquare, \\:white_large_square:", {QStringLiteral("U+02B1C"), QStringLiteral(u"⬜"), QStringLiteral("White Large Square")}},
{"\\libra, \\:libra:", {QStringLiteral("U+0264E"), QStringLiteral(u"♎"), QStringLiteral("Libra")}},
{"\\lgwhtsquare", {QStringLiteral("U+02B1C"), QStringLiteral(u"⬜"), QStringLiteral("White Large Square")}},
{"\\libra", {QStringLiteral("U+0264E"), QStringLiteral(u"♎"), QStringLiteral("Libra")}},
{"\\linefeed", {QStringLiteral("U+021B4"), QStringLiteral(u"↴"), QStringLiteral("Rightwards Arrow With Corner Downwards / Right Arrow With Corner Down")}},
{"\\ll", {QStringLiteral("U+0226A"), QStringLiteral(u"≪"), QStringLiteral("Much Less-Than / Much Less Than")}},
{"\\llarc", {QStringLiteral("U+025DF"), QStringLiteral(u"◟"), QStringLiteral("Lower Left Quadrant Circular Arc")}},
{"\\llblacktriangle", {QStringLiteral("U+025E3"), QStringLiteral(u"◣"), QStringLiteral("Black Lower Left Triangle")}},
{"\\llbracket, \\openbracketleft", {QStringLiteral("U+027E6"), QStringLiteral(u"⟦"), QStringLiteral("Mathematical Left White Square Bracket")}},
{"\\llbracket", {QStringLiteral("U+027E6"), QStringLiteral(u"⟦"), QStringLiteral("Mathematical Left White Square Bracket")}},
{"\\llcorner", {QStringLiteral("U+0231E"), QStringLiteral(u"⌞"), QStringLiteral("Bottom Left Corner")}},
{"\\lllnest", {QStringLiteral("U+02AF7"), QStringLiteral(u"⫷"), QStringLiteral("Triple Nested Less-Than")}},
{"\\lltriangle", {QStringLiteral("U+025FA"), QStringLiteral(u"◺"), QStringLiteral("Lower Left Triangle")}},
......@@ -2532,26 +2581,27 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{QStringLiteral("U+02268 + U+0FE00"),
QStringLiteral(u"≨︀"),
QStringLiteral("Less-Than But Not Equal To / Less Than But Not Equal To + Variation Selector-1")}},
{"\\male, \\mars", {QStringLiteral("U+02642"), QStringLiteral(u"♂"), QStringLiteral("Male Sign")}},
{"\\male", {QStringLiteral("U+02642"), QStringLiteral(u"♂"), QStringLiteral("Male Sign")}},
{"\\maltese", {QStringLiteral("U+02720"), QStringLiteral(u"✠"), QStringLiteral("Maltese Cross")}},
{"\\mapsdown", {QStringLiteral("U+021A7"), QStringLiteral(u"↧"), QStringLiteral("Downwards Arrow From Bar / Down Arrow From Bar")}},
{"\\mapsfrom", {QStringLiteral("U+021A4"), QStringLiteral(u"↤"), QStringLiteral("Leftwards Arrow From Bar / Left Arrow From Bar")}},
{"\\mapsto", {QStringLiteral("U+021A6"), QStringLiteral(u"↦"), QStringLiteral("Rightwards Arrow From Bar / Right Arrow From Bar")}},
{"\\mapsup", {QStringLiteral("U+021A5"), QStringLiteral(u"↥"), QStringLiteral("Upwards Arrow From Bar / Up Arrow From Bar")}},
{"\\mdblkcircle, \\:black_circle:", {QStringLiteral("U+026AB"), QStringLiteral(u"⚫"), QStringLiteral("Medium Black Circle")}},
{"\\mars", {QStringLiteral("U+02642"), QStringLiteral(u"♂"), QStringLiteral("Male Sign")}},
{"\\mdblkcircle", {QStringLiteral("U+026AB"), QStringLiteral(u"⚫"), QStringLiteral("Medium Black Circle")}},
{"\\mdblkdiamond", {QStringLiteral("U+02B25"), QStringLiteral(u"⬥"), QStringLiteral("Black Medium Diamond")}},
{"\\mdblklozenge", {QStringLiteral("U+02B27"), QStringLiteral(u"⬧"), QStringLiteral("Black Medium Lozenge")}},
{"\\mdblksquare, \\:black_medium_square:", {QStringLiteral("U+025FC"), QStringLiteral(u"◼"), QStringLiteral("Black Medium Square")}},
{"\\mdblksquare", {QStringLiteral("U+025FC"), QStringLiteral(u"◼"), QStringLiteral("Black Medium Square")}},
{"\\mdlgblkcircle", {QStringLiteral("U+025CF"), QStringLiteral(u"●"), QStringLiteral("Black Circle")}},
{"\\mdlgblkdiamond", {QStringLiteral("U+025C6"), QStringLiteral(u"◆"), QStringLiteral("Black Diamond")}},
{"\\mdlgwhtdiamond", {QStringLiteral("U+025C7"), QStringLiteral(u"◇"), QStringLiteral("White Diamond")}},
{"\\mdsmblksquare, \\:black_medium_small_square:", {QStringLiteral("U+025FE"), QStringLiteral(u"◾"), QStringLiteral("Black Medium Small Square")}},
{"\\mdsmblksquare", {QStringLiteral("U+025FE"), QStringLiteral(u"◾"), QStringLiteral("Black Medium Small Square")}},
{"\\mdsmwhtcircle", {QStringLiteral("U+026AC"), QStringLiteral(u"⚬"), QStringLiteral("Medium Small White Circle")}},
{"\\mdsmwhtsquare, \\:white_medium_small_square:", {QStringLiteral("U+025FD"), QStringLiteral(u"◽"), QStringLiteral("White Medium Small Square")}},
{"\\mdwhtcircle, \\:white_circle:", {QStringLiteral("U+026AA"), QStringLiteral(u"⚪"), QStringLiteral("Medium White Circle")}},
{"\\mdsmwhtsquare", {QStringLiteral("U+025FD"), QStringLiteral(u"◽"), QStringLiteral("White Medium Small Square")}},
{"\\mdwhtcircle", {QStringLiteral("U+026AA"), QStringLiteral(u"⚪"), QStringLiteral("Medium White Circle")}},
{"\\mdwhtdiamond", {QStringLiteral("U+02B26"), QStringLiteral(u"⬦"), QStringLiteral("White Medium Diamond")}},
{"\\mdwhtlozenge", {QStringLiteral("U+02B28"), QStringLiteral(u"⬨"), QStringLiteral("White Medium Lozenge")}},
{"\\mdwhtsquare, \\:white_medium_square:", {QStringLiteral("U+025FB"), QStringLiteral(u"◻"), QStringLiteral("White Medium Square")}},
{"\\mdwhtsquare", {QStringLiteral("U+025FB"), QStringLiteral(u"◻"), QStringLiteral("White Medium Square")}},
{"\\measangledltosw",
{QStringLiteral("U+029AF"), QStringLiteral(u"⦯"), QStringLiteral("Measured Angle With Open Arm Ending In Arrow Pointing Left And Down")}},
{"\\measangledrtose",
......@@ -2572,7 +2622,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\measuredangle", {QStringLiteral("U+02221"), QStringLiteral(u"∡"), QStringLiteral("Measured Angle")}},
{"\\measuredangleleft", {QStringLiteral("U+0299B"), QStringLiteral(u"⦛"), QStringLiteral("Measured Angle Opening Left")}},
{"\\medblackstar", {QStringLiteral("U+02B51"), QStringLiteral(u"⭑"), QStringLiteral("Black Small Star")}},
{"\\medwhitestar, \\:star:", {QStringLiteral("U+02B50"), QStringLiteral(u"⭐"), QStringLiteral("White Medium Star")}},
{"\\medwhitestar", {QStringLiteral("U+02B50"), QStringLiteral(u"⭐"), QStringLiteral("White Medium Star")}},
{"\\mercury", {QStringLiteral("U+0263F"), QStringLiteral(u"☿"), QStringLiteral("Mercury")}},
{"\\mho", {QStringLiteral("U+02127"), QStringLiteral(u"℧"), QStringLiteral("Inverted Ohm Sign / Mho")}},
{"\\mid", {QStringLiteral("U+02223"), QStringLiteral(u"∣"), QStringLiteral("Divides")}},
......@@ -2612,6 +2662,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\nVtwoheadrightarrow", {QStringLiteral("U+02901"), QStringLiteral(u"⤁"), QStringLiteral("Rightwards Two-Headed Arrow With Double Vertical Stroke")}},
{"\\nVtwoheadrightarrowtail",
{QStringLiteral("U+02918"), QStringLiteral(u"⤘"), QStringLiteral("Rightwards Two-Headed Arrow With Tail With Double Vertical Stroke")}},
{"\\nabla", {QStringLiteral("U+02207"), QStringLiteral(u"∇"), QStringLiteral("Nabla")}},
{"\\napprox", {QStringLiteral("U+02249"), QStringLiteral(u"≉"), QStringLiteral("Not Almost Equal To")}},
{"\\nasymp", {QStringLiteral("U+0226D"), QStringLiteral(u"≭"), QStringLiteral("Not Equivalent To")}},
{"\\natural", {QStringLiteral("U+0266E"), QStringLiteral(u"♮"), QStringLiteral("Music Natural Sign / Natural")}},
......@@ -2621,7 +2672,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
QStringLiteral("Difference Between + Combining Long Solidus Overlay / Non-Spacing Long Slash Overlay")}},
{"\\ncong", {QStringLiteral("U+02247"), QStringLiteral(u"≇"), QStringLiteral("Neither Approximately Nor Actually Equal To")}},
{"\\ne", {QStringLiteral("U+02260"), QStringLiteral(u"≠"), QStringLiteral("Not Equal To")}},
{"\\nearrow, \\:arrow_upper_right:", {QStringLiteral("U+02197"), QStringLiteral(u"↗"), QStringLiteral("North East Arrow / Upper Right Arrow")}},
{"\\nearrow", {QStringLiteral("U+02197"), QStringLiteral(u"↗"), QStringLiteral("North East Arrow / Upper Right Arrow")}},
{"\\neg", {QStringLiteral("U+000AC"), QStringLiteral(u"¬"), QStringLiteral("Not Sign")}},
{"\\neovnwarrow", {QStringLiteral("U+02931"), QStringLiteral(u"⤱"), QStringLiteral("North East Arrow Crossing North West Arrow")}},
{"\\neovsearrow", {QStringLiteral("U+0292E"), QStringLiteral(u"⤮"), QStringLiteral("North East Arrow Crossing South East Arrow")}},
......@@ -2729,7 +2780,7 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\nvtwoheadrightarrow", {QStringLiteral("U+02900"), QStringLiteral(u"⤀"), QStringLiteral("Rightwards Two-Headed Arrow With Vertical Stroke")}},
{"\\nvtwoheadrightarrowtail",
{QStringLiteral("U+02917"), QStringLiteral(u"⤗"), QStringLiteral("Rightwards Two-Headed Arrow With Tail With Vertical Stroke")}},
{"\\nwarrow, \\:arrow_upper_left:", {QStringLiteral("U+02196"), QStringLiteral(u"↖"), QStringLiteral("North West Arrow / Upper Left Arrow")}},
{"\\nwarrow", {QStringLiteral("U+02196"), QStringLiteral(u"↖"), QStringLiteral("North West Arrow / Upper Left Arrow")}},
{"\\nwovnearrow", {QStringLiteral("U+02932"), QStringLiteral(u"⤲"), QStringLiteral("North West Arrow Crossing North East Arrow")}},
{"\\o", {QStringLiteral("U+000F8"), QStringLiteral(u"ø"), QStringLiteral("Latin Small Letter O With Stroke / Latin Small Letter O Slash")}},
{"\\obar", {QStringLiteral("U+0233D"), QStringLiteral(u"⌽"), QStringLiteral("Apl Functional Symbol Circle Stile")}},
......@@ -2749,7 +2800,8 @@ static const tsl::htrie_map<char, Completion> completiontrie(
{"\\olessthan", {QStringLiteral("U+029C0"), QStringLiteral(u"⧀"), QStringLiteral("Circled Less-Than")}},
{"\\omega", {QStringLiteral("U+003C9"), QStringLiteral(u"ω"), QStringLiteral("Greek Small Letter Omega")}},
{"\\ominus", {QStringLiteral("U+02296"), QStringLiteral(u"⊖"), QStringLiteral("Circled Minus")}},
{"\\openbracketright, \\rrbracket", {QStringLiteral("U+027E7"), QStringLiteral(u"⟧"), QStringLiteral("Mathematical Right White Square Bracket")}},
{"\\openbracketleft", {QStringLiteral("U+027E6"), QStringLiteral(u"⟦"), QStringLiteral("Mathematical Left White Square Bracket")}},
{"\\openbracketright", {QStringLiteral("U+027E7"), QStringLiteral(u"⟧"), QStringLiteral("Mathematical Right White Square Bracket")}},
{"\\openo", {QStringLiteral("U+00254"), QStringLiteral(u"ɔ"), QStringLiteral("Latin Small Letter Open O")}},
{"\\oplus", {QStringLiteral("U+02295"), QStringLiteral(u"⊕"), QStringLiteral("Circled Plus")}},
{"\\opluslhrim", {QStringLiteral("U+02A2D"), QStringLiteral(u"⨭"), QStringLiteral("Plus Sign In Left Half Circle")}},
......@@ -2787,8 +2839,9 @@ static const tsl::htrie_map<char, Completion> completiontrie(