Установил тут себе на днях дополнение Context Search (
https://addons.mozilla.org/ru/firefox/addon/240) - теперь у меня в контексном меню можно выбирать любой из поисковых движков, искать стало гораздо быстрее и удобнее.
Одна беда - у меня поисковых движков добавлено довольно много, и когда они показываются общим списком, выглядит оно довольно сумбурно.
Так что я решил добавить возможность вставлять в меню разделители, чтоб оно хоть немножко логично выглядело.
В результате выглядит это так:
Заодно добавил опцию, позволяющую отдавать движку закавыченную строчку, если в ней есть хоть один пробел (т.е она будет искать именно выделенное словосочетание, а не просто выделенный набор слов - из моего опыта, это нужно практически всегда, когда ищешь выделенный текст, а не пишешь запрос сам).
Для интересующихся -
Сначала установите ContextSearch 0.4.4:
https://addons.mozilla.org/ru/firefox/addons/versions/240#version-0.4.4. Никаких гарантий, что будет работать с другими версиями.
Затем надо скачать мое обновление:
http://files.rsdn.ru/8211/ContextSearchSeparatorsAndQuote.zipЕго надо разархивировать в папку, в которой Firefox держит свои дополнения (у меня это C:\Documents and Settings\jazzer\Application Data\Mozilla\Firefox\Profiles\hm8iplba.default\extensions).
Добавились две настройки:
- extensions.contextsearch.separatorItems - список поисковых движков (через запятую, без пробелов), перед которыми нужно вставить в меню разделитель. У меня это "Wikipedia (en),MultiTran Dictionary,Gramota.Ru,RSDN,Price.ru,YouTube Video Search,allmusic - Album,LinkedIn".
- extensions.contextsearch.quoteStringsWithSpaces - заключать в кавычки строку с пробелами или нет (true/false)
Изменять настройки надо на странице
about:config, введите в строке поиска "contextsearch".
Изменены только 2 файла, так что вместо разархивирования можете заменить только их:
- {902D2C4A-457A-4EF9-AD43-7014562929FF}\chrome\content\contextsearch.js - собственно код
- {902D2C4A-457A-4EF9-AD43-7014562929FF}\defaults\preferences\contextsearch.js - настройки по умолчанию
Оригинальные файлы лежат там же с расширением 0.4.4.
Суть изменений (она Вам понадобится, если Вы захотите установить это обновление на более новую версию ContextSearch):
- {902D2C4A-457A-4EF9-AD43-7014562929FF}\defaults\preferences\contextsearch.js
Просто добавлены настройки:
*** contextsearch.js.0.4.4 ╤с ш■э 27 2009 11:33:32
--- contextsearch.js ╫Є ш■э 18 2009 10:51:04
***************
*** 1,1 ****
--- 1,3 ----
pref("extensions.contextsearch.hideStandardContextItem",true);
+ pref("extensions.contextsearch.quoteStringsWithSpaces",false);
+ pref("extensions.contextsearch.separatorItems","");
- {902D2C4A-457A-4EF9-AD43-7014562929FF}\chrome\content\contextsearch.js
Тут тоже все, я думаю, очевидно.
*** contextsearch.js.0.4.4 ╤с ш■э 27 2009 11:32:16
--- contextsearch.js ╫Є ш■э 18 2009 10:51:05
***************
*** 173,179 ****
--- 174,187 ----
rebuildmenu: function ()
{
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefService);
+
+ var sepItemsPrefValue = "";
+ sepItemsPrefValue = prefs.getComplexValue("extensions.contextsearch.separatorItems",
+ Components.interfaces.nsISupportsString).data;
+ sepItems = sepItemsPrefValue.split(',');
+
const kXULNS = "
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var searchService = Components.classes["@mozilla.org/browser/search-service;1"]
***************
*** 200,206 ****
--- 209,225 ----
popup.insertBefore(menuitem, popup.firstChild);
menuitem.engine = engines[i];
menuitem.setAttribute("onclick", "return contextsearch.menuitemclick(event);");
+
+ // add separator
+ for (var j = 0; j < sepItems.length; j++)
+ {
+ if (sepItems[j] == engines[i].name)
+ {
+ var separator = document.createElementNS(kXULNS, "menuseparator");
+ popup.insertBefore(separator, popup.firstChild);
+ break;
+ }
+ }
}
},
***************
*** 234,240 ****
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
! var params = contextsearch.getSearchParams(aEvent.target.engine, contextsearch.getBrowserSelection(null, aEvent));
--- 252,264 ----
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
! var searchValue = contextsearch.getBrowserSelection(null, aEvent);
!
! if (prefs.getBoolPref("extensions.contextsearch.quoteStringsWithSpaces") && searchValue.indexOf(' ') >= 0 ) {
! searchValue = '"' + searchValue + '"';
! }
! var params = contextsearch.getSearchParams(aEvent.target.engine, searchValue);
var loadInBackgroundPref = prefs.getBoolPref("browser.tabs.loadInBackground");
var loadInForeground = false;