mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-24 00:02:27 +01:00
keyword support for bookmarks
This commit is contained in:
@@ -151,50 +151,93 @@ function parseBookmarkString(str, res)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* also ensures that each search engine has a vimperator-friendly alias */
|
||||
function getSearchEngines()
|
||||
{
|
||||
var search_engines = [];
|
||||
const nsSS = Components.classes["@mozilla.org/browser/search-service;1"].
|
||||
getService(Components.interfaces.nsIBrowserSearchService);
|
||||
var firefox_engines = nsSS.getVisibleEngines({ });
|
||||
for(var i in firefox_engines)
|
||||
{
|
||||
if (!firefox_engines[i].alias || !firefox_engines[i].alias.match(/^[a-z0-9_]+$/))
|
||||
{
|
||||
var alias = firefox_engines[i].name.replace(/^\W*(\w+).*/, "$1").toLowerCase();
|
||||
firefox_engines[i].alias = alias;
|
||||
}
|
||||
search_engines.push([firefox_engines[i].alias, firefox_engines[i].description]);
|
||||
}
|
||||
|
||||
return search_engines;
|
||||
}
|
||||
|
||||
function Search()
|
||||
function Bookmarks()
|
||||
{
|
||||
const search_service = Components.classes["@mozilla.org/browser/search-service;1"].
|
||||
getService(Components.interfaces.nsIBrowserSearchService);
|
||||
getService(Components.interfaces.nsIBrowserSearchService);
|
||||
|
||||
this.getDefaultEngine = function()
|
||||
/* also ensures that each search engine has a vimperator-friendly alias */
|
||||
this.getSearchEngines = function()
|
||||
{
|
||||
return search_service.currentEngine;
|
||||
var search_engines = [];
|
||||
var firefox_engines = search_service.getVisibleEngines({ });
|
||||
for(var i in firefox_engines)
|
||||
{
|
||||
if (!firefox_engines[i].alias || !firefox_engines[i].alias.match(/^[a-z0-9_]+$/))
|
||||
{
|
||||
var alias = firefox_engines[i].name.replace(/^\W*(\w+).*/, "$1").toLowerCase();
|
||||
firefox_engines[i].alias = alias;
|
||||
}
|
||||
search_engines.push([firefox_engines[i].alias, firefox_engines[i].description]);
|
||||
}
|
||||
|
||||
return search_engines;
|
||||
}
|
||||
|
||||
this.setDefaultEngine = function(alias)
|
||||
// FIXME: for now g_keywords is generated by get_bookmarks_completion, WILL HAVE TO CHANGE
|
||||
// format of returned array:
|
||||
// [keyword, helptext, url]
|
||||
this.getKeywords = function()
|
||||
{
|
||||
var engine = search_service.getEngineByAlias(alias);
|
||||
return g_keywords;
|
||||
}
|
||||
|
||||
// xxx: probably remove these functions
|
||||
// this.getDefaultEngine = function()
|
||||
// {
|
||||
// return search_service.currentEngine;
|
||||
// }
|
||||
// this.setDefaultEngine = function(alias)
|
||||
// {
|
||||
// var engine = search_service.getEngineByAlias(alias);
|
||||
// if(engine)
|
||||
// search_service.currentEngine = engine;
|
||||
// else
|
||||
// echoerr("Error: Search engine with alias '" + alias + "' does not exist");
|
||||
// }
|
||||
// this.getEngine = function(alias)
|
||||
// {
|
||||
// var engine = search_service.getEngineByAlias(alias);
|
||||
// return engine;
|
||||
// }
|
||||
|
||||
// if the engine name is null, it uses the default search engine
|
||||
// returns a url for the search string
|
||||
this.getSearchURL = function(text, engine_name)
|
||||
{
|
||||
var url = null;
|
||||
if(!engine_name || engine_name == "")
|
||||
engine_name = get_pref("defsearch", "google");
|
||||
|
||||
// first checks the search engines for a match
|
||||
var engine = search_service.getEngineByAlias(engine_name);
|
||||
if(engine)
|
||||
search_service.currentEngine = engine;
|
||||
else
|
||||
echoerr("Error: Search engine with alias '" + alias + "' does not exist");
|
||||
}
|
||||
{
|
||||
if(text)
|
||||
url = engine.getSubmission(text, null).uri.spec;
|
||||
else
|
||||
url = engine.searchForm;
|
||||
}
|
||||
else // check for keyword urls
|
||||
{
|
||||
for (var i in g_keywords)
|
||||
{
|
||||
if(g_keywords[i][0] == engine_name)
|
||||
{
|
||||
if (text == null)
|
||||
text = "";
|
||||
url = g_keywords[i][2].replace(/%s/g, encodeURIComponent(text));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.getEngine = function(alias)
|
||||
{
|
||||
var engine = search_service.getEngineByAlias(alias);
|
||||
return engine;
|
||||
// if we came here, the engine_name is neither
|
||||
return url;
|
||||
}
|
||||
logMessage("Bookmarks initialized.");
|
||||
}
|
||||
var search = new Search(); // FIXME, must it really be here? doesn't work in vimperator.js
|
||||
|
||||
var bookmarks = new Bookmarks(); // FIXME, must it really be here? doesn't work in vimperator.js
|
||||
// vim: set fdm=marker sw=4 ts=4 et:
|
||||
|
||||
Reference in New Issue
Block a user