[Pkg-mozext-commits] [itsalltext] 404/459: Added preference for the working dir
David Prévot
taffit at moszumanska.debian.org
Tue Feb 24 23:26:42 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository itsalltext.
commit 10461c6e1aa5bafa79d37ce3d0b9dc1a74953a00
Author: Christian Höltje <docwhat at gerf.org>
Date: Fri May 3 22:41:25 2013 -0400
Added preference for the working dir
Cleaned up file handling while I was at it; I don't keep nsIFile objects around on
`cacheobjs` anymore.
* Fixes #37 -- Hard to find Temporary Files
* Fixes #15 -- Specify .iat directory
---
src/chrome/content/cacheobj.js | 87 +++++++++-------
src/chrome/content/itsalltext.js | 135 ++++++++++++++-----------
src/chrome/content/preferences.js | 70 +++++++++----
src/chrome/content/preferences.xul | 21 +++-
src/chrome/locale/en-US/preferences.dtd | 1 +
src/chrome/locale/en-US/preferences.properties | 1 +
src/defaults/preferences/itsalltext.js | 17 ++--
7 files changed, 210 insertions(+), 122 deletions(-)
diff --git a/src/chrome/content/cacheobj.js b/src/chrome/content/cacheobj.js
index be07711..ec27b2a 100644
--- a/src/chrome/content/cacheobj.js
+++ b/src/chrome/content/cacheobj.js
@@ -88,23 +88,11 @@ function CacheObj(node) {
*/
that.extension = null;
- /* Stores an nsILocalFile pointing to the current filename.
- * @type nsILocalFile
- */
- that.file = null;
-
/* The number of edits done on this object.
* @type number
*/
that.edit_count = 0;
- /* Set the default extension and create the nsIFile object. */
- extension = node.getAttribute('itsalltext-extension');
- if (typeof(extension) != 'string' || !extension.match(/^[.a-z0-9]+$/i)) {
- extension = itsalltext.getExtensions()[0];
- }
- that.setExtension(extension);
-
that.initFromExistingFile();
/**
@@ -183,8 +171,7 @@ CacheObj.prototype.destroy = function () {
delete this.node;
delete this.button;
- delete this.file;
- this.file = this.node = this.button = null;
+ this.node = this.button = null;
};
/**
@@ -192,17 +179,14 @@ CacheObj.prototype.destroy = function () {
* @param {String} ext The extension. Must include the dot. Example: .txt
*/
CacheObj.prototype.setExtension = function (ext) {
- if (ext == this.extension && this.file) {
+ if (ext == this.extension) {
return; /* It's already set. No problem. */
}
/* Create the nsIFile object */
- var file = itsalltext.factoryFile();
- file.initWithFile(itsalltext.getEditDir());
- file.append([this.base_filename, ext].join(''));
+ var file = this.getFile();
this.extension = ext;
- this.file = file;
if (file.exists()) {
this.timestamp = file.lastModifiedTime;
this.size = file.fileSize;
@@ -210,13 +194,40 @@ CacheObj.prototype.setExtension = function (ext) {
};
/**
+ * Returns the current extension.
+ * @returns {String} The current extension.
+ */
+CacheObj.prototype.getExtension = function () {
+ var extension;
+ if (!this.extension) {
+ extension = this.node.getAttribute('itsalltext-extension');
+ if (typeof(extension) != 'string' || !extension.match(/^[.a-z0-9]+$/i)) {
+ extension = itsalltext.getExtensions()[0];
+ }
+ this.extension = extension;
+ }
+ return this.extension;
+}
+
+
+/**
+ * Returns an nsIFile object for the current file.
+ * @returns {nsIFile} A file object for the directory.
+ */
+CacheObj.prototype.getFile = function () {
+ var file = itsalltext.factoryFile(itsalltext.getWorkingDir());
+ file.append([this.base_filename, this.getExtension()].join(''));
+ return file;
+}
+
+/**
* This function looks for an existing file and starts to monitor
* if the file exists already. It also deletes all existing files for
* this cache object.
*/
CacheObj.prototype.initFromExistingFile = function () {
var base = this.base_filename,
- fobj = itsalltext.getEditDir(),
+ fobj = itsalltext.factoryFile(itsalltext.getWorkingDir()),
entries = fobj.directoryEntries,
ext = null,
tmpfiles = /(\.bak|.tmp|~)$/,
@@ -290,7 +301,7 @@ CacheObj.prototype.toString = function () {
*/
CacheObj.prototype.write = function (clobber) {
clobber = typeof(clobber) === 'boolean'?clobber:true;
- var foStream, conv, text;
+ var foStream, conv, text, file = this.getFile();
if (clobber) {
foStream = Components.
@@ -298,7 +309,7 @@ CacheObj.prototype.write = function (clobber) {
createInstance(Components.interfaces.nsIFileOutputStream);
/* write, create, truncate */
- foStream.init(this.file, 0x02 | 0x08 | 0x20,
+ foStream.init(file, 0x02 | 0x08 | 0x20,
parseInt('0600', 8), 0);
/* We convert to charset */
@@ -312,13 +323,13 @@ CacheObj.prototype.write = function (clobber) {
foStream.close();
/* Reset Timestamp and filesize, to prevent a spurious refresh */
- this.timestamp = this.file.lastModifiedTime;
- this.size = this.file.fileSize;
+ this.timestamp = file.lastModifiedTime;
+ this.size = file.fileSize;
} else {
this.timestamp = this.size = null; // force refresh of textarea
}
- return this.file.path;
+ return file.path;
};
/**
@@ -343,7 +354,7 @@ CacheObj.prototype.getStyle = function (node, attr) {
*/
CacheObj.prototype.edit = function (extension, clobber) {
itsalltext.debug(this.uuid, 'edit(', extension, ', ', clobber, ')', this.uid);
- extension = typeof(extension) === 'string'?extension:this.extension;
+ extension = typeof(extension) === 'string'?extension:this.getExtension();
this.setExtension(extension);
var filename = this.write(clobber),
@@ -444,11 +455,12 @@ CacheObj.prototype.getStyle = function (node, attr) {
* Delete the file from disk.
*/
CacheObj.prototype.remove = function () {
- if (this.file.exists()) {
+ var file = this.getFile();
+ if (file.exists()) {
try {
- this.file.remove();
+ file.remove();
} catch (e) {
- //disabled-debug -- itsalltext.debug('remove(', this.file.path, '): ', e);
+ //disabled-debug -- itsalltext.debug('remove(', file.path, '): ', e);
return false;
}
}
@@ -461,6 +473,7 @@ CacheObj.prototype.remove = function () {
CacheObj.prototype.read = function () {
/* read file, reset ts & size */
var DEFAULT_REPLACEMENT_CHARACTER = 65533,
+ file = this.getFile(),
buffer = [],
fis,
istream,
@@ -469,7 +482,7 @@ CacheObj.prototype.read = function () {
try {
fis = Components.classes["@mozilla.org/network/file-input-stream;1"].
createInstance(Components.interfaces.nsIFileInputStream);
- fis.init(this.file, 0x01, parseInt('00400', 8), 0);
+ fis.init(file, 0x01, parseInt('00400', 8), 0);
// MODE_RDONLY | PERM_IRUSR
istream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].
@@ -484,8 +497,8 @@ CacheObj.prototype.read = function () {
istream.close();
fis.close();
- this.timestamp = this.file.lastModifiedTime;
- this.size = this.file.fileSize;
+ this.timestamp = file.lastModifiedTime;
+ this.size = file.fileSize;
return buffer.join('');
} catch (e) {
@@ -498,13 +511,13 @@ CacheObj.prototype.read = function () {
* @returns {boolean} returns true if the file has changed on disk.
*/
CacheObj.prototype.hasChanged = function () {
+ var file = this.getFile();
/* Check exists. Check ts and size. */
return this.private_is_watching &&
- this.file &&
- this.file.exists() &&
- this.file.isReadable() &&
- (this.file.lastModifiedTime != this.timestamp ||
- this.file.fileSize != this.size);
+ file.exists() &&
+ file.isReadable() &&
+ (file.lastModifiedTime != this.timestamp ||
+ file.fileSize != this.size);
};
/**
diff --git a/src/chrome/content/itsalltext.js b/src/chrome/content/itsalltext.js
index 664c5c6..e8a4074 100644
--- a/src/chrome/content/itsalltext.js
+++ b/src/chrome/content/itsalltext.js
@@ -1,5 +1,6 @@
/*extern Components, Firebug, getBoolPref, openDialog, getBrowser, gBrowser */
/*jslint undef: true, nomen: true, evil: false, browser: true, white: true */
+// vim: ts=4 sw=4
/*
* It's All Text! - Easy external editing of web forms.
@@ -34,14 +35,15 @@ var ItsAllText = function () {
loadthings;
/**
- * A factory method to make an nsILocalFile object.
+ * A factory method to make an nsIFile object.
* @param {String} path A path to initialize the object with (optional).
- * @returns {nsILocalFile}
+ * @returns {nsIFile}
*/
that.factoryFile = function (path) {
var file = Components.
classes["@mozilla.org/file/local;1"].
- createInstance(Components.interfaces.nsILocalFile);
+ createInstance(Components.interfaces.nsIFile);
+ file.followLinks = false;
if (typeof(path) == 'string' && path !== '') {
file.initWithPath(path);
}
@@ -50,9 +52,9 @@ var ItsAllText = function () {
/**
* Returns the directory where we put files to edit.
- * @returns nsILocalFile The location where we should write editable files.
+ * @returns {String} The location where we should write editable files.
*/
- that.getEditDir = function () {
+ that.getDefaultWorkingDir = function () {
/* Where is the directory that we use. */
var fobj = Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).
@@ -65,7 +67,7 @@ var ItsAllText = function () {
if (!fobj.isDirectory()) {
that.error(that.localeFormat('problem_making_directory', [fobj.path]));
}
- return fobj;
+ return fobj.path;
};
/**
@@ -118,6 +120,7 @@ var ItsAllText = function () {
types: {
charset: 'Char',
editor: 'Char',
+ workingdir: 'Char',
refresh: 'Int',
debug: 'Bool',
gumdrop_position: 'Char',
@@ -200,16 +203,16 @@ var ItsAllText = function () {
};
that.getTrackerId = function () {
- var id = that.preferences.tracker_id;
- if (!id) {
- id = [that.MYSTRING,
- Math.floor(Math.random()*999999).toString(),
- Math.round(new Date().getTime()),
- ].join(':')
- id = that.hashString(id);
- that.preferences.private_set('tracker_id', id);
- }
- return id;
+ var id = that.preferences.tracker_id;
+ if (!id) {
+ id = [that.MYSTRING,
+ Math.floor(Math.random()*999999).toString(),
+ Math.round(new Date().getTime()),
+ ].join(':')
+ id = that.hashString(id);
+ that.preferences.private_set('tracker_id', id);
+ }
+ return id;
}
@@ -238,7 +241,7 @@ var ItsAllText = function () {
*
* For a complete list of exceptions, see:
* http://lxr.mozilla.org/seamonkey/source/xpcom/base/nsError.h#262
- * @returns {nsILocalFile} A file object of the editor.
+ * @returns {nsIFile} A file object of the editor.
*/
that.getEditor = function () {
var editor = that.preferences.editor,
@@ -256,6 +259,23 @@ var ItsAllText = function () {
};
/**
+ * A Preference Option: Where should we store the working files?
+ * @returns {String} The directory path as a string.
+ */
+ that.getWorkingDir = function () {
+ var workingdir = that.preferences.workingdir,
+ default_workingdir;
+
+ if (!workingdir) {
+ default_workingdir = that.getDefaultWorkingDir();
+ that.preferences.private_set('workingdir', default_workingdir);
+ return default_workingdir;
+ } else {
+ return workingdir;
+ }
+ };
+
+ /**
* A Preference Option: should we display debugging info?
* @returns {bool}
*/
@@ -342,36 +362,36 @@ var ItsAllText = function () {
// @todo [wish] Profiling and optimization.
that.getFromTracker = function (id) {
- var tracker, doc;
- if (typeof gBrowser !== 'undefined') {
- doc = gBrowser.contentDocument;
- } else {
- // We must be in a XUL window, fall back to simpler method.
- doc = window.document;
- }
- tracker = doc.getUserData(that.getTrackerId());
- if (!tracker) {
- tracker = {};
- doc.setUserData(that.getTrackerId(), tracker, null);
- }
- return tracker[id];
- }
+ var tracker, doc;
+ if (typeof gBrowser !== 'undefined') {
+ doc = gBrowser.contentDocument;
+ } else {
+ // We must be in a XUL window, fall back to simpler method.
+ doc = window.document;
+ }
+ tracker = doc.getUserData(that.getTrackerId());
+ if (!tracker) {
+ tracker = {};
+ doc.setUserData(that.getTrackerId(), tracker, null);
+ }
+ return tracker[id];
+ }
- that.addToTracker = function (id, cobj) {
- var tracker, doc;
- if (typeof gBrowser !== 'undefined') {
- doc = gBrowser.contentDocument;
- } else {
- // We must be in a XUL window, fall back to simpler method.
- doc = window.document;
- }
- tracker = doc.getUserData(that.getTrackerId());
- if (!tracker) {
- tracker = {};
- }
- tracker[id] = cobj;
- doc.setUserData(that.getTrackerId(), tracker, null);
- that.debug("addToTracker:", id, cobj, tracker);
+ that.addToTracker = function (id, cobj) {
+ var tracker, doc;
+ if (typeof gBrowser !== 'undefined') {
+ doc = gBrowser.contentDocument;
+ } else {
+ // We must be in a XUL window, fall back to simpler method.
+ doc = window.document;
+ }
+ tracker = doc.getUserData(that.getTrackerId());
+ if (!tracker) {
+ tracker = {};
+ }
+ tracker[id] = cobj;
+ doc.setUserData(that.getTrackerId(), tracker, null);
+ that.debug("addToTracker:", id, cobj, tracker);
}
// @todo [wish] Refresh textarea on editor quit.
@@ -554,9 +574,6 @@ var ItsAllText = function () {
that.monitor.registerPage, true);
}
- // Start watching the preferences.
- that.preference_observer.register();
-
// Setup the context menu whenever it is shown.
var contentAreaContextMenu = document.getElementById("contentAreaContextMenu");
if (contentAreaContextMenu) {
@@ -617,8 +634,11 @@ ItsAllText.prototype.init = function () {
/* For debugging */
this.thread_id = Math.round(new Date().getTime() * Math.random());
+ // Start watching the preferences.
+ this.preference_observer.register();
+
/* Clean the edit directory whenever we create a new window. */
- this.cleanEditDir();
+ this.cleanWorkingDir();
/* Load the various bits needed to make this work. */
this.initScripts();
@@ -626,7 +646,7 @@ ItsAllText.prototype.init = function () {
/* Start the monitor */
var itsalltext = this;
setTimeout(function () {
- itsalltext.monitor = new itsalltext.Monitor();
+ itsalltext.monitor = new itsalltext.Monitor();
}, 1);
}
@@ -877,12 +897,13 @@ ItsAllText.prototype.keyprintToString = function (keyprint) {
/**
* Cleans out the edit directory, deleting all old files.
*/
-ItsAllText.prototype.cleanEditDir = function (force) {
+ItsAllText.prototype.cleanWorkingDir = function (force) {
force = typeof(force) === 'boolean'?force:false;
- var last_week = Date.now() - (1000 * 60 * 60 * 24 * 7),
- fobj = this.getEditDir(),
- entries = fobj.directoryEntries,
- entry;
+ var last_week, fobj, entries, entry;
+ last_week = Date.now() - (1000 * 60 * 60 * 24 * 7);
+ fobj = this.factoryFile(this.getWorkingDir());
+ entries = fobj.directoryEntries;
+
while (entries.hasMoreElements()) {
entry = entries.getNext();
entry.QueryInterface(Components.interfaces.nsIFile);
@@ -975,7 +996,7 @@ ItsAllText.prototype.rebuildMenu = function (uid, menu_id, is_disabled) {
menu.removeChild(items[i]);
}
- if (cobj.edit_count <= 0 && cobj.file && cobj.file.exists()) {
+ if (cobj.edit_count <= 0 && cobj.getFile() && cobj.getFile().exists()) {
node = document.createElementNS(that.XULNS, 'menuitem');
node.setAttribute('label', that.localeFormat('edit_existing', [cobj.extension]));
that.listen(node, 'command', that.hitch(that, 'menuExtEdit', null, false), false);
diff --git a/src/chrome/content/preferences.js b/src/chrome/content/preferences.js
index 6261a3f..58c44b4 100644
--- a/src/chrome/content/preferences.js
+++ b/src/chrome/content/preferences.js
@@ -11,7 +11,7 @@ function pref_editor_select() {
pref_editor = document.getElementById('pref_editor'),
nsIFilePicker = Components.interfaces.nsIFilePicker,
fp,
- initdir,
+ editor_file,
rv,
file,
editor;
@@ -23,13 +23,13 @@ function pref_editor_select() {
nsIFilePicker.modeOpen);
fp.appendFilters(nsIFilePicker.filterApps);
- initdir = Components.classes["@mozilla.org/file/local;1"].
- createInstance(Components.interfaces.nsILocalFile);
try {
- initdir.initWithPath(pref_editor.value);
- initdir = initdir.parent;
- if (initdir.exists() && initdir.isDirectory()) {
- fp.displayDirectory = initdir;
+ editor_file = itsalltext.factoryFile(pref_editor.value);
+ if (editor_file.parent.exists() && editor_file.parent.isDirectory()) {
+ fp.displayDirectory = editor_file.parent;
+ }
+ if (editor_file.exists()) {
+ fp.defaultString = editor_file.leafName;
}
} catch (e) {
// Ignore error, the pref may not have been set or who knows.
@@ -45,6 +45,41 @@ function pref_editor_select() {
}
}
+function pref_workingdir_select() {
+ var locale = document.getElementById("strings"),
+ pref_workingdir = document.getElementById('pref_workingdir'),
+ nsIFilePicker = Components.interfaces.nsIFilePicker,
+ fp,
+ workingdir,
+ rv,
+ file,
+ editor;
+
+ fp = Components.classes["@mozilla.org/filepicker;1"].
+ createInstance(nsIFilePicker);
+ fp.init(window,
+ locale.getString('workingdir.picker.window.title'),
+ nsIFilePicker.modeGetFolder);
+
+ try {
+ workingdir = itsalltext.factoryFile(pref_workingdir.value);
+ if (workingdir.exists() && workingdir.isDirectory()) {
+ fp.displayDirectory = workingdir;
+ }
+ } catch (e) {
+ // Ignore error, the pref may not have been set or who knows.
+ }
+
+ rv = fp.show();
+ if (rv == nsIFilePicker.returnOK) {
+ file = fp.file;
+ pref_workingdir.value = file.path;
+ workingdir = document.getElementById('workingdir');
+ workingdir.style.color = 'inherit';
+ workingdir.style.backgroundColor = 'inherit';
+ }
+}
+
function update_hotkey(disp) {
var str,
km = itsalltext.preferences.hotkey;
@@ -88,6 +123,7 @@ function setHelp(text) {
function pref_onload() {
var locale = document.getElementById("strings"),
editor,
+ workingdir,
box,
desc,
textnode;
@@ -114,19 +150,19 @@ function pref_onload() {
box.appendChild(desc);
}
if (window['arguments'] && window.arguments[1]) {
- var button = document.createElement('button');
- button.setAttribute('label', locale.getString('close.button'));
- button.addEventListener('command', function (event) { window.close(); }, true);
+ var button = document.createElement('button');
+ button.setAttribute('label', locale.getString('close.button'));
+ button.addEventListener('command', function (event) { window.close(); }, true);
- var spacer = document.createElement('spacer');
- spacer.setAttribute('flex', 1);
+ var spacer = document.createElement('spacer');
+ spacer.setAttribute('flex', 1);
- var box = document.createElement('hbox');
- box.appendChild(spacer);
- box.appendChild(button);
+ var box = document.createElement('hbox');
+ box.appendChild(spacer);
+ box.appendChild(button);
- var pane = document.getElementById('itsalltext-pane');
- pane.appendChild(box);
+ var pane = document.getElementById('itsalltext-pane');
+ pane.appendChild(box);
}
update_hotkey('disp-hotkey');
diff --git a/src/chrome/content/preferences.xul b/src/chrome/content/preferences.xul
index c99aadd..a312cd8 100644
--- a/src/chrome/content/preferences.xul
+++ b/src/chrome/content/preferences.xul
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
+
<!DOCTYPE prefwindow SYSTEM "chrome://itsalltext/locale/preferences.dtd" >
<prefwindow id="itsalltext-prefs"
title="&title;"
@@ -8,10 +8,10 @@
buttons="accept,cancel">
<stringbundleset id="strbundles">
- <stringbundle id="strings" src="chrome://itsalltext/locale/preferences.properties" />
+ <stringbundle id="strings" src="chrome://itsalltext/locale/preferences.properties" />
</stringbundleset>
- <prefpane
+ <prefpane
id="itsalltext-pane"
label="&title;"
onpaneload="pref_onload();"
@@ -22,6 +22,8 @@
name="extensions.itsalltext.charset" type="string" />
<preference id="pref_editor"
name="extensions.itsalltext.editor" type="string" />
+ <preference id="pref_workingdir"
+ name="extensions.itsalltext.workingdir" type="string" />
<preference id="pref_seconds"
name="extensions.itsalltext.refresh" type="int" />
<preference id="pref_extensions"
@@ -57,6 +59,19 @@
</vbox>
</row>
<row align="center">
+ <label control="workingdir" value="&workingdir.label;" />
+ <vbox>
+ <textbox preference="pref_workingdir" id="workingdir" size="20"
+ style="-moz-appearance: none !important; background:
+ inherit;" />
+ <hbox align="right">
+ <spacer />
+ <button oncommand="pref_workingdir_select();" label="&picker.label;"
+ id="browse" accesskey="b" tabindex="1" />
+ </hbox>
+ </vbox>
+ </row>
+ <row align="center">
<label control="seconds" value="&seconds.label;" />
<hbox>
<textbox preference="pref_seconds" id="seconds" size="2"
diff --git a/src/chrome/locale/en-US/preferences.dtd b/src/chrome/locale/en-US/preferences.dtd
index 75b8199..b85622a 100644
--- a/src/chrome/locale/en-US/preferences.dtd
+++ b/src/chrome/locale/en-US/preferences.dtd
@@ -1,5 +1,6 @@
<!ENTITY title "It's All Text! Preferences">
<!ENTITY editor.label "Editor:">
+<!ENTITY workingdir.label "Working Directory:">
<!ENTITY picker.label "Browse">
<!ENTITY seconds.label "Seconds between refreshing:">
<!ENTITY charset.label "Character Set (default: UTF-8):">
diff --git a/src/chrome/locale/en-US/preferences.properties b/src/chrome/locale/en-US/preferences.properties
index 6a49863..46c696c 100644
--- a/src/chrome/locale/en-US/preferences.properties
+++ b/src/chrome/locale/en-US/preferences.properties
@@ -1,4 +1,5 @@
picker.window.title=Choose your editor
+workingdir.picker.window.title=Choose the directory to store your text
problem.editor=I was unable to run your editor, '%1$S'. Use the browse button to choose another editor and try again.
mac.hint=If you use Mac OS X then '/Applications/TextEdit.app' is a safe choice.
close.button=Close
diff --git a/src/defaults/preferences/itsalltext.js b/src/defaults/preferences/itsalltext.js
index 1a8d247..d0ed032 100644
--- a/src/defaults/preferences/itsalltext.js
+++ b/src/defaults/preferences/itsalltext.js
@@ -1,9 +1,10 @@
-pref("extensions.itsalltext.charset", "UTF-8");
-pref("extensions.itsalltext.editor", "");
-pref("extensions.itsalltext.refresh", 3);
-pref("extensions.itsalltext.fade_time", '2.3');
-pref("extensions.itsalltext.debug", false);
+pref("extensions.itsalltext.charset", "UTF-8");
+pref("extensions.itsalltext.editor", "");
+pref("extensions.itsalltext.workingdir", "");
+pref("extensions.itsalltext.refresh", 3);
+pref("extensions.itsalltext.fade_time", '2.3');
+pref("extensions.itsalltext.debug", false);
pref("extensions.itsalltext.gumdrop_position", 'lower-right');
-pref("extensions.itsalltext.extensions", '.txt,.html,.css,.xml,.xsl,.js');
-pref("extensions.itsalltext.hotkey", '');
-pref("extensions.itsalltext.tracker_id", '');
+pref("extensions.itsalltext.extensions", '.txt,.html,.css,.xml,.xsl,.js');
+pref("extensions.itsalltext.hotkey", '');
+pref("extensions.itsalltext.tracker_id", '');
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/itsalltext.git
More information about the Pkg-mozext-commits
mailing list