\nVimperator help\n' +
// XXX: stylesheet broken here? Have to add it in the vimperator.xul file
- '\n' +
+ '\n' +
'\n\n
\n' +
'version ' + vimperator.version + '\n' +
header +
diff --git a/chrome/content/vimperator/hints.js b/content/hints.js
similarity index 100%
rename from chrome/content/vimperator/hints.js
rename to content/hints.js
diff --git a/chrome/content/vimperator/logo_white.png b/content/logo_white.png
similarity index 100%
rename from chrome/content/vimperator/logo_white.png
rename to content/logo_white.png
diff --git a/chrome/content/vimperator/mappings.js b/content/mappings.js
similarity index 100%
rename from chrome/content/vimperator/mappings.js
rename to content/mappings.js
diff --git a/content/modes.js b/content/modes.js
new file mode 100644
index 00000000..a64af728
--- /dev/null
+++ b/content/modes.js
@@ -0,0 +1,184 @@
+/***** BEGIN LICENSE BLOCK ***** {{{
+Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+The contents of this file are subject to the Mozilla Public License Version
+1.1 (the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+http://www.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+for the specific language governing rights and limitations under the
+License.
+
+(c) 2006-2007: Martin Stubenschrott
+
+Alternatively, the contents of this file may be used under the terms of
+either the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the GPL or the LGPL are applicable instead
+of those above. If you wish to allow use of your version of this file only
+under the terms of either the GPL or the LGPL, and not to allow others to
+use your version of this file under the terms of the MPL, indicate your
+decision by deleting the provisions above and replace them with the notice
+and other provisions required by the GPL or the LGPL. If you do not delete
+the provisions above, a recipient may use your version of this file under
+the terms of any one of the MPL, the GPL or the LGPL.
+}}} ***** END LICENSE BLOCK *****/
+
+vimperator.modes = (function()
+{
+ var main = 1; // NORMAL
+ var extended = 0; // NONE
+
+ var passNextKey = false;
+ var passAllKeys = false;
+
+ function getModeMessage()
+ {
+ if (passNextKey && !passAllKeys)
+ return "PASS THROUGH (next)";
+ else if (passAllKeys && !passNextKey)
+ return "PASS THROUGH";
+
+ var ext = "";
+ switch (extended)
+ {
+ case vimperator.modes.QUICK_HINT:
+ ext = " (quick)"; break;
+ case vimperator.modes.EXTENDED_HINT:
+ ext = " (extended)"; break;
+ case vimperator.modes.ALWAYS_HINT:
+ ext = " (always)"; break;
+ case vimperator.modes.MENU: // TODO: desirable?
+ ext = " (menu)"; break;
+ }
+
+ switch (main)
+ {
+ case vimperator.modes.HINTS:
+ return "HINTS" + ext;
+ default:
+ return null;
+ }
+ }
+
+ function handleModeChange(oldmode, newmode)
+ {
+ vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
+
+ switch (oldmode)
+ {
+ case vimperator.modes.HINTS:
+ // XXX: for now this does not work, but later it should be here
+ // vimperator.hints.disableHahMode();
+ break;
+ }
+
+ if (newmode == vimperator.modes.NORMAL)
+ {
+ var value = Options.getFirefoxPref("accessibility.browsewithcaret", false);
+ if (value)
+ Options.setFirefoxPref("accessibility.browsewithcaret", false);
+
+ vimperator.statusline.updateUrl();
+ vimperator.focusContent();
+ }
+ }
+
+ return {
+ // main modes, only one should ever be active
+ NONE: 0,
+ NORMAL: 1 << 0,
+ HINTS: 1 << 1,
+ COMMAND_LINE: 1 << 2,
+ // extended modes, can include multiple modes, and even main modes
+ EX: 1 << 10,
+ INPUT_MULTILINE: 1 << 11,
+ OUTPUT_MULTILINE: 1 << 12,
+ SEARCH_FORWARD: 1 << 13,
+ SEARCH_BACKWARD: 1 << 14,
+ QUICK_HINT: 1 << 15,
+ EXTENDED_HINT: 1 << 16,
+ ALWAYS_HINT: 1 << 17,
+ MENU: 1 << 18, // a popupmenu is active
+
+ reset: function(silent)
+ {
+ this.set(vimperator.modes.NORMAL, vimperator.modes.NONE, silent);
+ },
+
+ show: function()
+ {
+ if (!vimperator.options["showmode"])
+ return;
+
+ // never show mode messages if we are in command line mode
+ if (main == vimperator.modes.COMMAND_LINE)
+ return;
+
+ var msg = getModeMessage();
+ if (msg)
+ vimperator.commandline.echo("-- " + getModeMessage() + " --");
+ else
+ vimperator.commandline.echo("");
+ },
+
+ // helper function to set both modes in one go
+ set: function(main_mode, extended_mode, silent)
+ {
+ // if a main mode is set, the extended is always cleared
+ if (typeof main_mode === "number")
+ {
+ if (main_mode != main)
+ handleModeChange(main, main_mode);
+
+ main = main_mode;
+ if (!extended_mode)
+ extended = vimperator.modes.NONE;
+
+ }
+ if (typeof extended_mode === "number")
+ extended = extended_mode;
+
+ if (!silent)
+ this.show();
+ },
+
+ // add/remove always work on the extended mode only
+ add: function(mode)
+ {
+ extended |= mode;
+ this.show();
+ },
+ remove: function(mode)
+ {
+ extended = (extended | mode) ^ mode;
+ this.show();
+ },
+
+ get passNextKey() { return passNextKey; },
+ set passNextKey(value) { passNextKey = value; this.show(); },
+
+ get passAllKeys() { return passAllKeys; },
+ set passAllKeys(value) { passAllKeys = value; this.show(); },
+
+ get main() { return main; },
+ set main(value) {
+ if (value != main)
+ handleModeChange(main, value);
+
+ main = value;
+ // setting the main mode always resets any extended mode
+ extended = vimperator.modes.NONE;
+ this.show();
+ },
+
+ get extended() { return extended; },
+ set extended(value) {
+ extended = value; this.show();
+ }
+ }
+})();
+
+// vim: set fdm=marker sw=4 ts=4 et:
diff --git a/chrome/content/vimperator/options.js b/content/options.js
similarity index 100%
rename from chrome/content/vimperator/options.js
rename to content/options.js
diff --git a/chrome/content/vimperator/tabs.js b/content/tabs.js
similarity index 100%
rename from chrome/content/vimperator/tabs.js
rename to content/tabs.js
diff --git a/content/test.js b/content/test.js
new file mode 100755
index 00000000..a09ce39e
--- /dev/null
+++ b/content/test.js
@@ -0,0 +1,13 @@
+var TestCase = mozlab.mozunit.TestCase;
+var assert = mozlab.mozunit.assertions;
+
+var tc = new TestCase('testcase description here');
+
+tc.tests = {
+ 'First test is successful': function() {
+ var vimperator = new Vimperator();
+ assert.isDefined(vimperator);
+ assert.isTrue(true);
+ }
+}
+tc.run()
diff --git a/chrome/content/vimperator/ui.js b/content/ui.js
similarity index 100%
rename from chrome/content/vimperator/ui.js
rename to content/ui.js
diff --git a/chrome/content/vimperator/vimperator.js b/content/vimperator.js
similarity index 100%
rename from chrome/content/vimperator/vimperator.js
rename to content/vimperator.js
diff --git a/chrome/content/vimperator/vimperator.xul b/content/vimperator.xul
similarity index 98%
rename from chrome/content/vimperator/vimperator.xul
rename to content/vimperator.xul
index 7c57f892..345d1602 100644
--- a/chrome/content/vimperator/vimperator.xul
+++ b/content/vimperator.xul
@@ -29,9 +29,7 @@ the terms of any one of the MPL, the GPL or the LGPL.
}}} ***** END LICENSE BLOCK ***** -->
-
-
-
+