1
0
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:
Martin Stubenschrott
2007-05-04 18:04:11 +00:00
parent 2284afec3a
commit c6d67fe8fe
12 changed files with 221 additions and 102 deletions

View File

@@ -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: