Skip to content

Register inline query

brookhong edited this page Jun 10, 2018 · 12 revisions

What is inline query?

Inline query is a quick approach for you to query word without leaving current page, usually for word translation.

SurfingKeys will not provide default dictionary service from 0.9.33, though shanbay(which is only for English-Chinese translation) had been built in before.

You need register your own dictionary service for inline query by API Front.registerInlineQuery.

Front.registerInlineQuery(url, parseResult)
parameter explanation
url string or function, the dictionary service url or a function to return the dictionary service url.
parseResult function, a function to parse result from dictionary service and return a HTML string to render explanation.
headers object[optional], in case your dictionary service needs authentication.

Take shanbay for example,

    Front.registerInlineQuery({
        url: "https://api.shanbay.com/bdc/search/?word=",
        parseResult: function(res) {
            try {
                res = JSON.parse(res.text);
                var exp = res.msg;
                if (res.data.definition) {
                    var pronunciations = [];
                    for (var reg in res.data.pronunciations) {
                        pronunciations.push(`<div>[${reg}] ${res.data.pronunciations[reg]}</div>`);
                        // pronunciations.push(`<div><audio src="${res.data[reg+'_audio']}" controls></audio></div>`);
                    }
                    var definition = res.data.definition.split("\n").map(function(d) {
                        return `<li>${d}</li>`;
                    }).join("");
                    exp = `${pronunciations.join("")}<ul>${definition}</ul>`;
                }
                if (res.data.en_definitions) {
                    exp += "<hr/>";
                    for (var lex in res.data.en_definitions) {
                        var sense = res.data.en_definitions[lex].map(function(s) {
                            return `<li>${s}</li>`;
                        }).join("");
                        exp += `<div>${lex}</div><ul>${sense}</ul>`;
                    }
                }
                return exp;
            } catch (e) {
                return "";
            }
        }
    });

q to query word under cursor in visual mode

image

Q to open Omnibar to query word interactively

image

Clone this wiki locally