mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-21 00:37:58 +01:00
Fix search suggestion issues.
--HG-- extra : rebase_source : 4aeeb43dc214f7ae2e8275fb6190556eade78890
This commit is contained in:
@@ -232,6 +232,31 @@ var Bookmarks = Module("bookmarks", {
|
|||||||
}).toObject();
|
}).toObject();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the given search engine provides suggestions.
|
||||||
|
* engine based on the given *query*. The results are always in the
|
||||||
|
* form of an array of strings. If *callback* is provided, the
|
||||||
|
* request is executed asynchronously and *callback* is called on
|
||||||
|
* completion. Otherwise, the request is executed synchronously and
|
||||||
|
* the results are returned.
|
||||||
|
*
|
||||||
|
* @param {string} engineName The name of the search engine from
|
||||||
|
* which to request suggestions.
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
hasSuggestions: function hasSuggestions(engineName, query, callback) {
|
||||||
|
const responseType = "application/x-suggestions+json";
|
||||||
|
|
||||||
|
if (hasOwnProperty(this.suggestionProviders, engineName))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
let engine = hasOwnProperty(this.searchEngines, engineName) && this.searchEngines[engineName];
|
||||||
|
if (engine && engine.supportsResponseType(responseType))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a list of search suggestions from the named search
|
* Retrieves a list of search suggestions from the named search
|
||||||
* engine based on the given *query*. The results are always in the
|
* engine based on the given *query*. The results are always in the
|
||||||
@@ -697,16 +722,19 @@ var Bookmarks = Module("bookmarks", {
|
|||||||
let engineList = (engineAliases || options["suggestengines"].join(",") || "google").split(",");
|
let engineList = (engineAliases || options["suggestengines"].join(",") || "google").split(",");
|
||||||
|
|
||||||
engineList.forEach(function (name) {
|
engineList.forEach(function (name) {
|
||||||
|
if (!bookmarks.hasSuggestions(name))
|
||||||
|
return;
|
||||||
|
|
||||||
var desc = name;
|
var desc = name;
|
||||||
let engine = bookmarks.searchEngines[name];
|
let engine = bookmarks.searchEngines[name];
|
||||||
if (engine)
|
if (engine)
|
||||||
var desc = engine.description;
|
desc = engine.description;
|
||||||
else if (!hasOwnProperty(bookmarks.suggestionProviders, name))
|
|
||||||
return;
|
|
||||||
|
|
||||||
let [, word] = /^\s*(\S+)/.exec(context.filter) || [];
|
let [, word] = /^\s*(\S+)/.exec(context.filter) || [];
|
||||||
if (!kludge && word == name) // FIXME: Check for matching keywords
|
if (!kludge && word == name) // FIXME: Check for matching keywords
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let ctxt = context.fork(name, 0);
|
let ctxt = context.fork(name, 0);
|
||||||
|
|
||||||
ctxt.title = [/*L*/desc + " Suggestions"];
|
ctxt.title = [/*L*/desc + " Suggestions"];
|
||||||
@@ -727,7 +755,12 @@ var Bookmarks = Module("bookmarks", {
|
|||||||
ctxt.incomplete = false;
|
ctxt.incomplete = false;
|
||||||
ctxt.completions = array.uniq(ctxt.completions.filter(c => compl.contains(c))
|
ctxt.completions = array.uniq(ctxt.completions.filter(c => compl.contains(c))
|
||||||
.concat(compl), true);
|
.concat(compl), true);
|
||||||
}, Cu.reportError);
|
}, function (e) {
|
||||||
|
ctxt.incomplete = false;
|
||||||
|
ctxt.completions = [];
|
||||||
|
if (e)
|
||||||
|
Cu.reportError(e);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -305,6 +305,8 @@ var HintSession = Class("HintSession", CommandMode, {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
let computedStyle = doc.defaultView.getComputedStyle(elem, null);
|
let computedStyle = doc.defaultView.getComputedStyle(elem, null);
|
||||||
|
if (!computedStyle)
|
||||||
|
return false;
|
||||||
if (computedStyle.visibility != "visible" || computedStyle.display == "none")
|
if (computedStyle.visibility != "visible" || computedStyle.display == "none")
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user