Написал экстеншн для лёгкого начала разработки, прототипирования:

http://zencd.spb.ru/ext/restartless.xpi

Что делает:
— загружает динамически все субскрипты по маске *.js из директории «%firefoxprofile%/restartless-development»,
— делает это в момент, когда браузер уже полностью загружен: window.addEventListener('load', ...),
— добавляет пункт меню «Tools/Reload Restartless Development scripts» по которому старые event handlers (если таковые были проставлены) удаляются, а (уже подредактированные) субскрипты читаются заново.

По идее, субскрипты могут быть оформлены как угодно, но тогда перегрузить (reload) всё это добро эффективно без перезапуска лисы не получится. Для того чтобы reload срабатывал, нужно вешать обработчики событий таким образом (пример субскрипта):

Выделить код

Код:

// Обрабатывает двойной клик на табе (можно его закрыть)
//
// __RD stands for 'Restartless Development'
__RD.addListener({
	event   : 'dblclick',
	// функция, которая, когда надо будет, возвратит XUL-объект
	// для которого нужно обработать событие
	object  : function() { return getBrowser().mTabContainer },
	handler : function(event) {
		var t = event.originalTarget
		var p = t.parentNode
		if(t && p) {
			if('tab' == t.localName || 'tab' == p.localName) {
				//gBrowser.removeCurrentTab()
				alert('a tab DBLLL clicked!')
			}
		}
	},
})

Немного жёсткая форма (места для ветвления логики не предусмотрено), но для моих идей этого пока хватает. И вроде как работает о_О

Что скажете, господа разработчики: что хорошо, чего не хватает?

zencd
Рекомендую посмотреть на аналог, позволяющий загружать скрипты и оверлеи вообще во все окна, и из любых файлов/каталогов: http://userchromejs.mozdev.org/
Правда, перезагружать скрипты не позволяет (надо открывать новое окно или заново открывать окно).

zencd

чего не хватает?

Хотелось бы иметь текстовое поле в котором можно набить код и выполнить нажатием сочетания клавиш, и "консоль" в которой будет результат выполнения. Ну, то есть как это сделано в Extension Developer и ExecuteJS. Функцию print, понятное дело.
Чем не устраивает Extension Developer - в FF3 код выполняется без привилегий. Что не устраивает в ExecuteJS - алерты в случае ошибки (в Extension Developer ошибки выводятся в "консоль").
Оба расширения могут неправильно указывать строку с ошибкой.

Спасибо, Anton! userChrome.js получше моего будет — открыл новое окно, и мир изменился, и никаких ограничений в виде специальной регистрации обработчиков событий, полная свобода.

А что за привилегии, без которых выполняется ExtDev?

Вообще-то, я рекомендовал ознакомиться с userChrome для почерпания идей к дальнейшему развитию restartless - кодовых или инфраструктурных, раз уж задан был такой вопрос "чего не хватает".
Сам я прототипирование на основе (пере)загрузки скриптов не выполняю, обычно мне надо набросать короткий код и посмотреть результат его выполнения.

А что за привилегии, без которых выполняется ExtDev?

Само ExtDev выполняется с chrome привилегиями, а вот код, который пишется в окне JavaScript Development Environment - нет. В FF2 он ещё выполнялся с chrome-привилегиями, в FF3 уже нет.
Например, если написать

Выделить код

Код:

try{
print (Components. classes)
}catch(e){print(e);}

то в "консоли" будет

Выделить код

Код:

Error: Permission denied to get property XPCComponents.classes

хотя в FF2 было бы

Выделить код

Код:

[object nsXPCComponents_Classes]

Вообще при правильных настройках ctrl+n даёт окно, где уже загружены последние изменения (не уверен насчёт глобальных свойств, но всё, что мне надо было, так обновлялось) - но наверное про это и так все знают?..

Anton пишет

Само ExtDev выполняется с chrome привилегиями, а вот код, который пишется в окне JavaScript Development Environment - нет. В FF2 он ещё выполнялся с chrome-привилегиями, в FF3 уже нет.

Типа чтобы через консоль нельзя было взломать [firefox]?..
Но тогда возникает сомнение, что вообще можно написать такое расширение (иначе это какая-то неполная защита).
Однако в реализации не разбирался, так что...
Опять же всегда можно скинуть скрипт в оверлей и подгрузить (или нельзя без полной перегрузки?).

Вообще при правильных настройках ctrl+n даёт окно, где уже загружены последние изменения (не уверен насчёт глобальных свойств, но всё, что мне надо было, так обновлялось) - но наверное про это и так все знают?..

Есть ситуации, когда тестировать лучше с включенным кэшем или только в одном окне. Вообще, релоад в одном окне имеет право на жизнь, ему хоткей только прикрутить.

Типа чтобы через консоль нельзя было взломать [firefox]?..

Типа, код вычисляется в html и из html по javascript-протоколу. А в FF3 с этим строго.

Опять же всегда можно скинуть скрипт в оверлей и подгрузить (или нельзя без полной перегрузки?).

От кэширования зависит.