diff --git a/chrome/content/vimperator/bookmarks.js b/chrome/content/vimperator/bookmarks.js
index cc4e857f..915a38b7 100644
--- a/chrome/content/vimperator/bookmarks.js
+++ b/chrome/content/vimperator/bookmarks.js
@@ -7,27 +7,27 @@
function getProperty( aInput, aArc, DS )
{
- var node;
- node = DS.GetTarget( aInput, aArc, true );
- if( node instanceof Components.interfaces.nsIRDFResource ) {
- return node.Value;
- }
- if( node instanceof Components.interfaces.nsIRDFLiteral ) {
- return node.Value;
- }
- return "";
+ var node;
+ node = DS.GetTarget( aInput, aArc, true );
+ if( node instanceof Components.interfaces.nsIRDFResource ) {
+ return node.Value;
+ }
+ if( node instanceof Components.interfaces.nsIRDFLiteral ) {
+ return node.Value;
+ }
+ return "";
}
function addBookmark(title, uri)
{
- folder = RDF.GetResource("NC:BookmarksRoot");
- var rSource = BookmarksUtils.createBookmark(title, uri, null, title);
- var selection = BookmarksUtils.getSelectionFromResource(rSource);
- var target = BookmarksUtils.getTargetFromFolder(folder);
- BookmarksUtils.insertAndCheckSelection("newbookmark", selection, target);
+ folder = RDF.GetResource("NC:BookmarksRoot");
+ var rSource = BookmarksUtils.createBookmark(title, uri, null, title);
+ var selection = BookmarksUtils.getSelectionFromResource(rSource);
+ var target = BookmarksUtils.getTargetFromFolder(folder);
+ BookmarksUtils.insertAndCheckSelection("newbookmark", selection, target);
- //also update bookmark cache
- g_bookmarks.unshift([uri, title]);
+ //also update bookmark cache
+ g_bookmarks.unshift([uri, title]);
}
/* no idea what it does, it Just Works (TM)
@@ -36,47 +36,47 @@ function addBookmark(title, uri)
*/
function deleteBookmark(url)
{
- var deleted = 0;
+ var deleted = 0;
- // gNC_NS for trunk, NC_NS for 1.X
- try {var pNC_NS; pNC_NS = gNC_NS;} catch (err) { pNC_NS = NC_NS;}
- if(! BMSVC || ! BMDS || ! RDF || ! pNC_NS ) return null;
- if ( !url) return null; // just in case
+ // gNC_NS for trunk, NC_NS for 1.X
+ try {var pNC_NS; pNC_NS = gNC_NS;} catch (err) { pNC_NS = NC_NS;}
+ if(! BMSVC || ! BMDS || ! RDF || ! pNC_NS ) return null;
+ if ( !url) return null; // just in case
- var curfolder = RDF.GetResource("NC:BookmarksRoot");
- var urlArc = RDF.GetResource(pNC_NS+"URL");
- var urlLiteral = RDF.GetLiteral(url);
- if (BMDS.hasArcIn(urlLiteral, urlArc)) {
- var bmResources, bmResource, title, uri, type, ptype;
- bmResources = BMSVC.GetSources(urlArc, urlLiteral, true);
- while (bmResources.hasMoreElements()) {
- bmResource = bmResources.getNext();
- type = BookmarksUtils.resolveType(bmResource);
- if (type != "ImmutableBookmark") {
- ptype = BookmarksUtils.resolveType(BMSVC.getParent(bmResource));
-// alert(type);
-// if ( type == "Folder") // store the current folder
-// curfolder = bmResource;
- if ( (type == "Bookmark" || type == "IEFavorite") && ptype != "Livemark") {
- title = BookmarksUtils.getProperty(bmResource, pNC_NS+"Name");
- uri = BookmarksUtils.getProperty(bmResource, pNC_NS+"URL");
+ var curfolder = RDF.GetResource("NC:BookmarksRoot");
+ var urlArc = RDF.GetResource(pNC_NS+"URL");
+ var urlLiteral = RDF.GetLiteral(url);
+ if (BMDS.hasArcIn(urlLiteral, urlArc)) {
+ var bmResources, bmResource, title, uri, type, ptype;
+ bmResources = BMSVC.GetSources(urlArc, urlLiteral, true);
+ while (bmResources.hasMoreElements()) {
+ bmResource = bmResources.getNext();
+ type = BookmarksUtils.resolveType(bmResource);
+ if (type != "ImmutableBookmark") {
+ ptype = BookmarksUtils.resolveType(BMSVC.getParent(bmResource));
+// alert(type);
+// if ( type == "Folder") // store the current folder
+// curfolder = bmResource;
+ if ( (type == "Bookmark" || type == "IEFavorite") && ptype != "Livemark") {
+ title = BookmarksUtils.getProperty(bmResource, pNC_NS+"Name");
+ uri = BookmarksUtils.getProperty(bmResource, pNC_NS+"URL");
- if (uri == url)
- {
- RDFC.Init(BMDS, BMSVC.getParent(bmResource));
- RDFC.RemoveElement(bmResource, true);
- deleted++;
- }
- }
- }
- }
- }
+ if (uri == url)
+ {
+ RDFC.Init(BMDS, BMSVC.getParent(bmResource));
+ RDFC.RemoveElement(bmResource, true);
+ deleted++;
+ }
+ }
+ }
+ }
+ }
- // also update bookmark cache, if we removed at least one bookmark
- if(deleted > 0)
- bookmarks_loaded = false;
+ // also update bookmark cache, if we removed at least one bookmark
+ if(deleted > 0)
+ bookmarks_loaded = false;
- return deleted;
+ return deleted;
}
/* call the function like this:
@@ -90,65 +90,65 @@ function deleteBookmark(url)
*/
function parseBookmarkString(str, res)
{
- res.tags = [];
- res.title = null;
- res.url = null;
+ res.tags = [];
+ res.title = null;
+ res.url = null;
- var re_title = /^\s*((-t|--title)\s+(\w+|\".*\"))(.*)/;
- var re_tags = /^\s*((-T|--tags)\s+((\w+)(,\w+)*))(.*)/;
- var re_url = /^\s*(\".+\"|\S+)(.*)/;
+ var re_title = /^\s*((-t|--title)\s+(\w+|\".*\"))(.*)/;
+ var re_tags = /^\s*((-T|--tags)\s+((\w+)(,\w+)*))(.*)/;
+ var re_url = /^\s*(\".+\"|\S+)(.*)/;
- var match_tags = null;
- var match_title = null;
- var match_url = null;
+ var match_tags = null;
+ var match_title = null;
+ var match_url = null;
- while(!str.match(/^\s*$/))
- {
- /* first check for --tags */
- match_tags = str.match(re_tags);
- if(match_tags != null)
- {
- str = match_tags[match_tags.length-1]; // the last captured parenthesis is the rest of the string
- tags = match_tags[3].split(",");
- res.tags = res.tags.concat(tags);
- }
- else /* then for --titles */
- {
+ while(!str.match(/^\s*$/))
+ {
+ /* first check for --tags */
+ match_tags = str.match(re_tags);
+ if(match_tags != null)
+ {
+ str = match_tags[match_tags.length-1]; // the last captured parenthesis is the rest of the string
+ tags = match_tags[3].split(",");
+ res.tags = res.tags.concat(tags);
+ }
+ else /* then for --titles */
+ {
- match_title = str.match(re_title);
- if(match_title != null)
- {
- // only one title allowed
- if (res.title != null)
- return false;
+ match_title = str.match(re_title);
+ if(match_title != null)
+ {
+ // only one title allowed
+ if (res.title != null)
+ return false;
- str = match_title[match_title.length-1]; // the last captured parenthesis is the rest of the string
- title = match_title[3];
- if(title.charAt(0) == '"')
- title = title.substring(1,title.length-1);
- res.title = title;
- }
- else /* at last check for an url */
- {
- match_url = str.match(re_url);
- if (match_url != null)
- {
- // only one url allowed
- if (res.url != null)
- return false;
+ str = match_title[match_title.length-1]; // the last captured parenthesis is the rest of the string
+ title = match_title[3];
+ if(title.charAt(0) == '"')
+ title = title.substring(1,title.length-1);
+ res.title = title;
+ }
+ else /* at last check for an url */
+ {
+ match_url = str.match(re_url);
+ if (match_url != null)
+ {
+ // only one url allowed
+ if (res.url != null)
+ return false;
- str = match_url[match_url.length-1]; // the last captured parenthesis is the rest of the string
- url = match_url[1];
- if(url.charAt(0) == '"')
- url = url.substring(1,url.length-1);
- res.url = url;
- }
- else return false; // no url, tag or title found but still text left, abort
- }
- }
- }
-
- return true;
+ str = match_url[match_url.length-1]; // the last captured parenthesis is the rest of the string
+ url = match_url[1];
+ if(url.charAt(0) == '"')
+ url = url.substring(1,url.length-1);
+ res.url = url;
+ }
+ else return false; // no url, tag or title found but still text left, abort
+ }
+ }
+ }
+
+ return true;
}
-// vim: set fdm=marker sw=4 ts=4:
+// vim: set fdm=marker sw=4 ts=4 et:
diff --git a/chrome/content/vimperator/commands.js b/chrome/content/vimperator/commands.js
index 384f3b84..5068cba2 100644
--- a/chrome/content/vimperator/commands.js
+++ b/chrome/content/vimperator/commands.js
@@ -37,62 +37,62 @@ the terms of any one of the MPL, the GPL or the LGPL.
* ]
*/
var g_commands = [/*{{{*/
- [
- ["addons"],
- "Show available Browser Extensions and Themes",
- "You can add/remove/disable browser extensions from this dialog. Be aware that not all Firefox extensions work, because Vimperator overrides some keybindings and changes Firefox's GUI.",
- function() { openURLsInNewTab("chrome://mozapps/content/extensions/extensions.xul", true); },
- null
- ],
- [
- ["back", "ba"],
- "Go back in the browser history",
- "Count is supported, :3back goes back 3 pages in the browser history.",
- function(args, special, count) { stepInHistory(count > 0 ? -1 * count : -1); },
- null
- ],
- [
- ["bdelete", "bd", "bwipeout", "bw", "bunload", "bun", "tabclose", "tabc"],
- "Delete current buffer (=tab)",
- "Count WILL be supported in future releases, then :2bd removes two tabs and the one the right is selected. Do :bdelete! to select the tab to the left after removing the current tab.",
- function (args, special, count) { tab_remove (count, special, 0); },
- null
- ],
- [
- ["beep"],
- "Play a system beep",
- null,
- function() { beep(); },
- null
- ],
- [
- ["bmadd"],
- "Add a bookmark",
- "Usage: :bmadd [-t \"my custom title\"] [-T \"comma,separated,tags\"] [url] " +
- "If you don't add a custom title, either the title of the webpage or the URL will be taken as the title. "+
- "Tags WILL be some mechanism to classify bookmarks. Assume, you tag a url with the tags \"linux\" and \"computer\" you'll be able to search for bookmarks containing these tags. " +
- "You can omit the optional [url] field, so just do :bmadd to bookmark the currently loaded web page with a default title and without any tags.",
- function(args) { bmadd(args); },
- null
- ],
- [
- ["bmdel"],
- "Delete a bookmark",
- "Usage: :bmdel [-T \"comma,separated,tags\"] <url> " +
- "Deletes all bookmarks which matches the url AND the specified tags. Use <Tab> key on a regular expression to complete the url which you want to delete.",
- function(args) { bmdel(args); },
- function(filter) { return get_bookmark_completions(filter); }
- ],
- [
- ["bookmarks", "bm"],
- "Show bookmarks",
- "Usage: :bm [-T \"comma,separated,tags\"] <regexp> " +
- "Open the preview window at the bottom of the screen for all bookmarks which match the regexp either in the title or URL. " +
- "Close this window with :pclose or open entries with double click in the current tab or middle click in a new tab.",
- function(args, special) { bmshow(args, special); },
- function(filter) { return get_bookmark_completions(filter); }
- ],
- [
+ [
+ ["addons"],
+ "Show available Browser Extensions and Themes",
+ "You can add/remove/disable browser extensions from this dialog. Be aware that not all Firefox extensions work, because Vimperator overrides some keybindings and changes Firefox's GUI.",
+ function() { openURLsInNewTab("chrome://mozapps/content/extensions/extensions.xul", true); },
+ null
+ ],
+ [
+ ["back", "ba"],
+ "Go back in the browser history",
+ "Count is supported, :3back goes back 3 pages in the browser history.",
+ function(args, special, count) { stepInHistory(count > 0 ? -1 * count : -1); },
+ null
+ ],
+ [
+ ["bdelete", "bd", "bwipeout", "bw", "bunload", "bun", "tabclose", "tabc"],
+ "Delete current buffer (=tab)",
+ "Count WILL be supported in future releases, then :2bd removes two tabs and the one the right is selected. Do :bdelete! to select the tab to the left after removing the current tab.",
+ function (args, special, count) { tab_remove (count, special, 0); },
+ null
+ ],
+ [
+ ["beep"],
+ "Play a system beep",
+ null,
+ function() { beep(); },
+ null
+ ],
+ [
+ ["bmadd"],
+ "Add a bookmark",
+ "Usage: :bmadd [-t \"my custom title\"] [-T \"comma,separated,tags\"] [url] " +
+ "If you don't add a custom title, either the title of the webpage or the URL will be taken as the title. "+
+ "Tags WILL be some mechanism to classify bookmarks. Assume, you tag a url with the tags \"linux\" and \"computer\" you'll be able to search for bookmarks containing these tags. " +
+ "You can omit the optional [url] field, so just do :bmadd to bookmark the currently loaded web page with a default title and without any tags.",
+ function(args) { bmadd(args); },
+ null
+ ],
+ [
+ ["bmdel"],
+ "Delete a bookmark",
+ "Usage: :bmdel [-T \"comma,separated,tags\"] <url> " +
+ "Deletes all bookmarks which matches the url AND the specified tags. Use <Tab> key on a regular expression to complete the url which you want to delete.",
+ function(args) { bmdel(args); },
+ function(filter) { return get_bookmark_completions(filter); }
+ ],
+ [
+ ["bookmarks", "bm"],
+ "Show bookmarks",
+ "Usage: :bm [-T \"comma,separated,tags\"] <regexp> " +
+ "Open the preview window at the bottom of the screen for all bookmarks which match the regexp either in the title or URL. " +
+ "Close this window with :pclose or open entries with double click in the current tab or middle click in a new tab.",
+ function(args, special) { bmshow(args, special); },
+ function(filter) { return get_bookmark_completions(filter); }
+ ],
+ [
["buffer", "b"],
"Go to buffer number n. Full completion works.",
null,
@@ -106,263 +106,263 @@ var g_commands = [/*{{{*/
function (args) {bushow("", false);},
null
],
- [
- ["downloads", "dl"],
- "Show progress of current downloads",
- "Open the original Firefox download dialog in a new tab. " +
- "Here, downloads can be paused, canceled and resumed.",
- function() { openURLsInNewTab("chrome://mozapps/content/downloads/downloads.xul", true); },
- null
- ],
- [
- ["echo", "ec"],
- "Display a string at the bottom of the window",
- "Echo all arguments of this command. Useful for showing informational messages. Multiple lines WILL be seperated by \\n.",
- function(args) { echo(args); },
- null
- ],
- [
- ["echoerr", "echoe"],
- "Display an error string at the bottom of the window",
- "Echo all arguments of this command highlighted in red. Useful for showing important messages. Multiple lines WILL be seperated by \\n.",
- function(args) { echoerr(args); },
- null
- ],
- [
- ["execute", "exe"],
- "Run any javascript command through eval()",
- "Acts as a javascript interpreter by passing the argument to eval(). "+
- ":exec alert('Hello world') would show a dialog box with the text \"Hello world\". "+
- "The special version :execute! will open the javascript console of Firefox.",
- function(args, special) {
- if (special) // open javascript console
- openURLsInNewTab("chrome://global/content/console.xul", true);
- else
- eval(args);
- },
- null
- ],
- [
- ["forward", "fw"],
- "Go forward in the browser history",
- "Count is supported, :3forward goes forward 3 pages in the browser history.",
- function(count) { stepInHistory(count > 0 ? count : 1); },
- null
- ],
- [
- ["hardcopy", "ha"],
- "Print current document",
- "Open a GUI dialog where you can select the printer, number of copies, orientation, etc.",
- function() { goDoCommand('cmd_print'); },
- null
- ],
- [
- ["help", "h"],
- "Open help window",
- "Open the help window in the current tab. You WILL be able to show a specific section with :help commands.",
- function() { help(null); },
- null
- ],
- [
- ["history", "hs"],
- "Show recently visited URLs",
- "Usage: :hs <regexp> " +
- "Open the preview window at the bottom of the screen for all history items which match the regexp either in the title or URL. " +
- "Close this window with :pclose or open entries with double click in the current tab or middle click in a new tab.",
- function(args, special) { hsshow(args, special); },
- function(filter) { return get_history_completions(filter); }
- ],
- [
- ["mark"],
- "Mark current location within the webpage",
- "Not implemented yet",
- function (args) { set_location_mark(args); },
- null
- ],
- [
- ["marks"],
- "Show all location marks of current webpage",
- "Not implemented yet",
- function (args) { set_location_mark(args); },
- null
- ],
- [
- ["open", "o", "op", "edit", "e"],
- "Open one ore more URLs",
- "Usage: :open <url> [| <url>] " +
- "Opens one ore more URLs in the current buffer. "+
- "Multiple URLs can be separated with the | character. " +
- "Each |-separated token is analazed and in this order: "+
- "
Opened with the specified search engine if the token looks like a search string and the first word of the token is the name of a search engine (:open wiki linus torvalds will open the wikipedia entry for linux torvalds).
"+
- "
Opened with the default search engine if the first word is no search engine (:open linus torvalds will open a google search for linux torvalds).
"+
- "
Passed directly to Firefox in all other cases (:open www.osnews.com | www.slashdot.org will open OSNews in the current, and Slashdot in a new background tab).
"+
- "You WILL be able to use :open [-T \"linux\"] torvalds<Tab> to complete bookmarks with tag \"linux\" and which contain \"torvalds\". Note that -T support is only available for tab completion, not for the actual command. "+
- "The items which are completed on <Tab> are specified in the 'complete' option. "+
- "Without argument, reloads the current page. "+
- "Without argument but with !, reloads the current page skipping the cache.",
- function(args, special)
- {
- if(args.length > 0)
- openURLs(args);
- else
- {
- if (special)
- BrowserReloadSkipCache();
- else
- BrowserReload();
- }
- },
+ [
+ ["downloads", "dl"],
+ "Show progress of current downloads",
+ "Open the original Firefox download dialog in a new tab. " +
+ "Here, downloads can be paused, canceled and resumed.",
+ function() { openURLsInNewTab("chrome://mozapps/content/downloads/downloads.xul", true); },
+ null
+ ],
+ [
+ ["echo", "ec"],
+ "Display a string at the bottom of the window",
+ "Echo all arguments of this command. Useful for showing informational messages. Multiple lines WILL be seperated by \\n.",
+ function(args) { echo(args); },
+ null
+ ],
+ [
+ ["echoerr", "echoe"],
+ "Display an error string at the bottom of the window",
+ "Echo all arguments of this command highlighted in red. Useful for showing important messages. Multiple lines WILL be seperated by \\n.",
+ function(args) { echoerr(args); },
+ null
+ ],
+ [
+ ["execute", "exe"],
+ "Run any javascript command through eval()",
+ "Acts as a javascript interpreter by passing the argument to eval(). "+
+ ":exec alert('Hello world') would show a dialog box with the text \"Hello world\". "+
+ "The special version :execute! will open the javascript console of Firefox.",
+ function(args, special) {
+ if (special) // open javascript console
+ openURLsInNewTab("chrome://global/content/console.xul", true);
+ else
+ eval(args);
+ },
+ null
+ ],
+ [
+ ["forward", "fw"],
+ "Go forward in the browser history",
+ "Count is supported, :3forward goes forward 3 pages in the browser history.",
+ function(count) { stepInHistory(count > 0 ? count : 1); },
+ null
+ ],
+ [
+ ["hardcopy", "ha"],
+ "Print current document",
+ "Open a GUI dialog where you can select the printer, number of copies, orientation, etc.",
+ function() { goDoCommand('cmd_print'); },
+ null
+ ],
+ [
+ ["help", "h"],
+ "Open help window",
+ "Open the help window in the current tab. You WILL be able to show a specific section with :help commands.",
+ function() { help(null); },
+ null
+ ],
+ [
+ ["history", "hs"],
+ "Show recently visited URLs",
+ "Usage: :hs <regexp> " +
+ "Open the preview window at the bottom of the screen for all history items which match the regexp either in the title or URL. " +
+ "Close this window with :pclose or open entries with double click in the current tab or middle click in a new tab.",
+ function(args, special) { hsshow(args, special); },
+ function(filter) { return get_history_completions(filter); }
+ ],
+ [
+ ["mark"],
+ "Mark current location within the webpage",
+ "Not implemented yet",
+ function (args) { set_location_mark(args); },
+ null
+ ],
+ [
+ ["marks"],
+ "Show all location marks of current webpage",
+ "Not implemented yet",
+ function (args) { set_location_mark(args); },
+ null
+ ],
+ [
+ ["open", "o", "op", "edit", "e"],
+ "Open one ore more URLs",
+ "Usage: :open <url> [| <url>] " +
+ "Opens one ore more URLs in the current buffer. "+
+ "Multiple URLs can be separated with the | character. " +
+ "Each |-separated token is analazed and in this order: "+
+ "
Opened with the specified search engine if the token looks like a search string and the first word of the token is the name of a search engine (:open wiki linus torvalds will open the wikipedia entry for linux torvalds).
"+
+ "
Opened with the default search engine if the first word is no search engine (:open linus torvalds will open a google search for linux torvalds).
"+
+ "
Passed directly to Firefox in all other cases (:open www.osnews.com | www.slashdot.org will open OSNews in the current, and Slashdot in a new background tab).
"+
+ "You WILL be able to use :open [-T \"linux\"] torvalds<Tab> to complete bookmarks with tag \"linux\" and which contain \"torvalds\". Note that -T support is only available for tab completion, not for the actual command. "+
+ "The items which are completed on <Tab> are specified in the 'complete' option. "+
+ "Without argument, reloads the current page. "+
+ "Without argument but with !, reloads the current page skipping the cache.",
+ function(args, special)
+ {
+ if(args.length > 0)
+ openURLs(args);
+ else
+ {
+ if (special)
+ BrowserReloadSkipCache();
+ else
+ BrowserReload();
+ }
+ },
- function(filter) { return get_url_completions(filter); }
- ],
- [
- ["pclose", "pc"],
- "Close preview window on bottom of screen",
- null,
- function() { preview_window.hidden = true; },
- null
- ],
- [
- ["preferences", "prefs"],
- "Show Browser Preferences",
- "You can change the browser preferences from this dialog. Be aware that not all Firefox preferences work, because Vimperator overrides some keybindings and changes Firefox's GUI. "+
- "Works like :set!, but opens the dialog in a new window instead of a new tab. Use this, if you experience problems/crashes when using :set!",
- function() { openPreferences(); },
- null
- ],
- [
- ["quit", "q"],
- "Quit current tab or quit Vimperator if this was the last tab",
- "When quitting Vimperator, the session is not stored.",
- function (args) { tab_remove(1, false, 1); },
- null
- ],
- [
- ["quitall", "quita", "qall", "qa"],
- "Quit Vimperator",
- "Quit Vimperator, no matter how many tabs/windows are open. The session is not stored.",
- function (args) { quit(false); },
- null
- ],
- [
- ["reload", "re"],
- "Reload current page",
- "Forces reloading of the current page, or of all open pages, if ! is given.",
- function(args, special) { reload(special); },
- null
- ],
- [
- ["restart"],
- "Restarts the browser",
- "Forces the browser to restart.",
- function(args, special) { restart(); },
- null
- ],
- [
- ["saveas", "sav"],
- "Save current web page to disk",
- "Open the original Firefox \"Save page as...\" dialog in a new tab. " +
- "There, you can save the current web page to disk with various options.",
- function() { goDoCommand('Browser:SavePage'); },
- null
- ],
- [
- ["set", "se"],
- "Set an option",
- "Permanently change an option. In contrast to Vim options are stored throughout sessions. "+
- "Boolean options must be set with :set option and :set nooption. "+
- ":set without an argument opens about:config in a new tab to change advanced Firefox options. "+
- ":set! opens the GUI preference panel from Firefox in a new tab. "+
- ":set option? or :set option shows the current value of the option. "+
- ":set option+=foo and :set option-=foo WILL add/remove foo from list options. ",
- function(args, special) { set(args, special); },
- function(filter) { return get_settings_completions(filter); }
- ],
- [
- ["source", "so"],
- "Load a local javascript file and execute it",
- "Not implemented yet",
- function(args) { source(args); },
- null
- ],
- [
- ["tabnext", "tn", "tnext"],
- "Switch to the next tab",
- "Cycles to the first tab, when the last is selected.",
- function(args, special, count) { tab_go(0); },
- null
- ],
- [
- ["tabopen", "t", "to", "topen", "tabedit", "tabe", "tabnew"],
- "Open one or more URLs in a new tab",
- "Like :open but open URLs in a new tab. If used with !, the 'tabopen' value of the 'activate' setting is negated.",
- function (args, special) { if (args.length > 0) openURLsInNewTab(args, !special); else openURLsInNewTab("about:blank", true); },
- function (filter) { return get_url_completions(filter); }
- ],
- [
- ["tabprevious", "tp", "tprev", "tprevious"],
- "Switch to the previous tab",
- "Cycles to the last tab, when the first is selected.",
- function(args, count) { tab_go(-1); },
- null
- ],
- [
- ["undo", "u"],
- "Undo closing of a tab",
- "If a count is given, don't close the last but the n'th last tab",
- function(args, special, count) { if(count < 1) count = 1; undoCloseTab(count-1); },
- null
- ],
- [
- ["qmarkadd", "qmadd"],
- "Mark a URL with a letter for quick access",
- "Not implemented yet",
- function(args) { set_url_mark("mark", "url"); }, // FIXME
- function(filter) { return [["a", ""], ["b", ""]]; }
- ],
- [
- ["qmarkdel", "qmdel"],
- "Mark a URL with a letter for quick access",
- "Not implemented yet",
- function(args) { set_url_mark("mark", "url"); }, // FIXME
- function(filter) { return [["a", ""], ["b", ""]]; }
- ],
- [
- ["qmarks", "qms"],
- "Shows marked URLs",
- "Not implemented yet",
- function(args) { show_url_marks(args); }, // FIXME
- null
- ],
- [
- ["version", "ve"],
- "Show version information",
- null,
- function () { echo("Vimperator version: " + g_vimperator_version); },
- null
- ],
- [
- ["winopen", "w", "wo", "wopen"],
- "Open an URL in a new window",
- "Not implemented yet",
- function () { echo("winopen not yet implemented"); },
- null
- ],
- [
- ["xall", "xa", "wqall", "wqa", "wq"],
- "Save the session and quit",
- "Quit Vimperator, no matter how many tabs/windows are open. The session is stored.",
- function (args) { quit(true); },
- null
- ],
- [
- ["zoom", "zo"],
- "Set zoom value of the webpage",
- "Usage: :zoom 150 zooms to 150% text size. "+
- "Zoom value can be between 25 and 500%. If it is omitted, zoom is reset to 100%.",
- function (args) { zoom_to(args); },
- null
- ]
+ function(filter) { return get_url_completions(filter); }
+ ],
+ [
+ ["pclose", "pc"],
+ "Close preview window on bottom of screen",
+ null,
+ function() { preview_window.hidden = true; },
+ null
+ ],
+ [
+ ["preferences", "prefs"],
+ "Show Browser Preferences",
+ "You can change the browser preferences from this dialog. Be aware that not all Firefox preferences work, because Vimperator overrides some keybindings and changes Firefox's GUI. "+
+ "Works like :set!, but opens the dialog in a new window instead of a new tab. Use this, if you experience problems/crashes when using :set!",
+ function() { openPreferences(); },
+ null
+ ],
+ [
+ ["quit", "q"],
+ "Quit current tab or quit Vimperator if this was the last tab",
+ "When quitting Vimperator, the session is not stored.",
+ function (args) { tab_remove(1, false, 1); },
+ null
+ ],
+ [
+ ["quitall", "quita", "qall", "qa"],
+ "Quit Vimperator",
+ "Quit Vimperator, no matter how many tabs/windows are open. The session is not stored.",
+ function (args) { quit(false); },
+ null
+ ],
+ [
+ ["reload", "re"],
+ "Reload current page",
+ "Forces reloading of the current page, or of all open pages, if ! is given.",
+ function(args, special) { reload(special); },
+ null
+ ],
+ [
+ ["restart"],
+ "Restarts the browser",
+ "Forces the browser to restart.",
+ function(args, special) { restart(); },
+ null
+ ],
+ [
+ ["saveas", "sav"],
+ "Save current web page to disk",
+ "Open the original Firefox \"Save page as...\" dialog in a new tab. " +
+ "There, you can save the current web page to disk with various options.",
+ function() { goDoCommand('Browser:SavePage'); },
+ null
+ ],
+ [
+ ["set", "se"],
+ "Set an option",
+ "Permanently change an option. In contrast to Vim options are stored throughout sessions. "+
+ "Boolean options must be set with :set option and :set nooption. "+
+ ":set without an argument opens about:config in a new tab to change advanced Firefox options. "+
+ ":set! opens the GUI preference panel from Firefox in a new tab. "+
+ ":set option? or :set option shows the current value of the option. "+
+ ":set option+=foo and :set option-=foo WILL add/remove foo from list options. ",
+ function(args, special) { set(args, special); },
+ function(filter) { return get_settings_completions(filter); }
+ ],
+ [
+ ["source", "so"],
+ "Load a local javascript file and execute it",
+ "Not implemented yet",
+ function(args) { source(args); },
+ null
+ ],
+ [
+ ["tabnext", "tn", "tnext"],
+ "Switch to the next tab",
+ "Cycles to the first tab, when the last is selected.",
+ function(args, special, count) { tab_go(0); },
+ null
+ ],
+ [
+ ["tabopen", "t", "to", "topen", "tabedit", "tabe", "tabnew"],
+ "Open one or more URLs in a new tab",
+ "Like :open but open URLs in a new tab. If used with !, the 'tabopen' value of the 'activate' setting is negated.",
+ function (args, special) { if (args.length > 0) openURLsInNewTab(args, !special); else openURLsInNewTab("about:blank", true); },
+ function (filter) { return get_url_completions(filter); }
+ ],
+ [
+ ["tabprevious", "tp", "tprev", "tprevious"],
+ "Switch to the previous tab",
+ "Cycles to the last tab, when the first is selected.",
+ function(args, count) { tab_go(-1); },
+ null
+ ],
+ [
+ ["undo", "u"],
+ "Undo closing of a tab",
+ "If a count is given, don't close the last but the n'th last tab",
+ function(args, special, count) { if(count < 1) count = 1; undoCloseTab(count-1); },
+ null
+ ],
+ [
+ ["qmarkadd", "qmadd"],
+ "Mark a URL with a letter for quick access",
+ "Not implemented yet",
+ function(args) { set_url_mark("mark", "url"); }, // FIXME
+ function(filter) { return [["a", ""], ["b", ""]]; }
+ ],
+ [
+ ["qmarkdel", "qmdel"],
+ "Mark a URL with a letter for quick access",
+ "Not implemented yet",
+ function(args) { set_url_mark("mark", "url"); }, // FIXME
+ function(filter) { return [["a", ""], ["b", ""]]; }
+ ],
+ [
+ ["qmarks", "qms"],
+ "Shows marked URLs",
+ "Not implemented yet",
+ function(args) { show_url_marks(args); }, // FIXME
+ null
+ ],
+ [
+ ["version", "ve"],
+ "Show version information",
+ null,
+ function () { echo("Vimperator version: " + g_vimperator_version); },
+ null
+ ],
+ [
+ ["winopen", "w", "wo", "wopen"],
+ "Open an URL in a new window",
+ "Not implemented yet",
+ function () { echo("winopen not yet implemented"); },
+ null
+ ],
+ [
+ ["xall", "xa", "wqall", "wqa", "wq"],
+ "Save the session and quit",
+ "Quit Vimperator, no matter how many tabs/windows are open. The session is stored.",
+ function (args) { quit(true); },
+ null
+ ],
+ [
+ ["zoom", "zo"],
+ "Set zoom value of the webpage",
+ "Usage: :zoom 150 zooms to 150% text size. "+
+ "Zoom value can be between 25 and 500%. If it is omitted, zoom is reset to 100%.",
+ function (args) { zoom_to(args); },
+ null
+ ]
];/*}}}*/
/* all built-in normal mode commands of Vimperator
@@ -375,486 +375,486 @@ var g_commands = [/*{{{*/
* ]
*/
var g_mappings = [/*{{{*/
- [
- ["]f"],
- "Focus next frame",
- "Flashes the next frame in order with a red color, to quickly show where keyboard focus is. "+
- "This may not work correctly for frames with lots of CSS code.",
- function(count) { focusNextFrame(); }
- ],
- [
+ [
+ ["]f"],
+ "Focus next frame",
+ "Flashes the next frame in order with a red color, to quickly show where keyboard focus is. "+
+ "This may not work correctly for frames with lots of CSS code.",
+ function(count) { focusNextFrame(); }
+ ],
+ [
["b"],
"Open a prompt to switch buffers",
"Typing the corresponding number opens switches to this buffer",
function (args) { bushow("", true); openVimperatorBar('buffer '); }
],
- [
- ["d"],
- "Delete current buffer (=tab)",
- "Count WILL be supported in future releases, then 2d removes two tabs and the one the right is selected.",
- function(count) { tab_remove(count, false, 0); }
- ],
- [
- ["D"],
- "Delete current buffer (=tab)",
- "Count WILL be supported in future releases, then 2D removes two tabs and the one the left is selected.",
- function(count) { tab_remove(count, true, 0); }
- ],
- [
- ["ge"],
- "Execute a JavaScript code",
- "Go Execute works like :execute. "+
- "This mapping is for debugging purposes, and may be removed in future.",
- function(count) { openVimperatorBar('execute '); }
- ],
- [
- ["gh"],
- "Go home",
- "Opens the homepage in the current tab.",
- function(count) { BrowserHome(); }
- ],
- [
- ["gH"],
- "Go home in a new tab",
- "Opens the homepage in a new tab.",
- function(count) { openURLsInNewTab("", true); BrowserHome(); }
- ],
- [
- ["gP"],
- "Open (put) an URL based on the current Clipboard contents in a new buffer",
- "Works like P, but inverts the 'activate' setting.",
- function(count) { openURLsInNewTab(readFromClipboard(), false); }
- ],
- [
- ["gt", "", ""],
- "Go to next tab",
- "Cycles to the first tab, when the last is selected. "+
- "Count is supported, 3gt goes to the third tab.",
- function(count) { tab_go(count > 0 ? count : 0); }
- ],
- [
- ["gT", "", ""],
- "Go to previous tab",
- "Cycles to the last tab, when the first is selected. "+
- "Count is supported, 3gt goes to the third tab.",
- function(count) { tab_go(count > 0 ? count :-1); }
- ],
- [
- ["o"],
- "Open one or more URLs in the current tab",
- "See :open for more details",
- function(count) { openVimperatorBar('open '); }
- ],
- [
- ["O"],
- "Open one ore more URLs in the current tab, based on current location",
- "Works like o, but preselects current URL in the :open query.",
- function(count) { openVimperatorBar('open ' + getCurrentLocation()); }
- ],
- [
- ["p", ""],
- "Open (put) an URL based on the current Clipboard contents in the current buffer",
- "You can also just select some non-URL text, and search for it with the default search engine with p",
- function(count) { openURLs(readFromClipboard()); }
- ],
- [
- ["P"],
- "Open (put) an URL based on the current Clipboard contents in a new buffer",
- "Works like p, but opens a new tab. "+
- "Whether the new buffer is activated, depends on the 'activate' setting.",
- function(count) { openURLsInNewTab(readFromClipboard(), true); }
- ],
- [
- ["r"],
- "Reload current page",
- "Forces reloading of the current page.",
- function(count) { reload(false); }
- ],
- [
- ["R"],
- "Reload all pages",
- "Forces reloading of all open pages.",
- function(count) { reload(true); }
- ],
- [
- ["t"],
- "Open one or more URLs in a new tab",
- "Like o but open URLs in a new tab."+
- "See :tabopen for more details",
- function(count) { openVimperatorBar('tabopen '); }
- ],
- [
- ["T"],
- "Open one ore more URLs in a new tab, based on current location",
- "Works like t, but preselects current URL in the :tabopen query.",
- function(count) { openVimperatorBar('tabopen ' + getCurrentLocation()); }
- ],
- [
- ["u"],
- "Undo closing of a tab",
- "If a count is given, don't close the last but the n'th last tab",
- function(count) { execute_command(count, 'undo', false, ''); }
- ],
- [
- ["y"],
- "Yank current location to the Clipboard",
- "Under UNIX the location is also put into the selection, which can be pasted with the middle mouse button.",
- function(count) { yankCurrentLocation(); }
- ],
- [
- ["zi"],
- "Zoom in",
- "Zoom in current web page by 25%. "+
- "Currently no count supported.",
- function(count) { zoom_in(1); }
- ],
- [
- ["zI"],
- "Zoom in more",
- "Zoom in current web page by 100%. "+
- "Currently no count supported.",
- function(count) { zoom_in(4); }
- ],
- [
- ["zo"],
- "Zoom out",
- "Zoom out current web page by 25%. "+
- "Currently no count supported.",
- function(count) { zoom_in(-1); }
- ],
- [
- ["zO"],
- "Zoom out more",
- "Zoom out current web page by 100%. "+
- "Currently no count supported.",
- function(count) { zoom_in(-4); }
- ],
- [
- ["zz"],
- "Set zoom value of the webpage",
- "150zz zooms to 150% text size. "+
- "Zoom value can be between 25 and 500%. If it is omitted, zoom is reset to 100%.",
- function(count) { zoom_to(count); }
- ],
- [
- ["ZQ"],
- "Quit Vimperator",
- "Quit Vimperator, no matter how many tabs/windows are open. The session is not stored. " +
- "Works like :qall.",
- function(count) { quit(false); }
- ],
- [
- ["ZZ"],
- "Save the session and quit",
- "Quit Vimperator, no matter how many tabs/windows are open. The session is stored. " +
- "Works like :xall.",
- function(count) { quit(true); }
- ],
+ [
+ ["d"],
+ "Delete current buffer (=tab)",
+ "Count WILL be supported in future releases, then 2d removes two tabs and the one the right is selected.",
+ function(count) { tab_remove(count, false, 0); }
+ ],
+ [
+ ["D"],
+ "Delete current buffer (=tab)",
+ "Count WILL be supported in future releases, then 2D removes two tabs and the one the left is selected.",
+ function(count) { tab_remove(count, true, 0); }
+ ],
+ [
+ ["ge"],
+ "Execute a JavaScript code",
+ "Go Execute works like :execute. "+
+ "This mapping is for debugging purposes, and may be removed in future.",
+ function(count) { openVimperatorBar('execute '); }
+ ],
+ [
+ ["gh"],
+ "Go home",
+ "Opens the homepage in the current tab.",
+ function(count) { BrowserHome(); }
+ ],
+ [
+ ["gH"],
+ "Go home in a new tab",
+ "Opens the homepage in a new tab.",
+ function(count) { openURLsInNewTab("", true); BrowserHome(); }
+ ],
+ [
+ ["gP"],
+ "Open (put) an URL based on the current Clipboard contents in a new buffer",
+ "Works like P, but inverts the 'activate' setting.",
+ function(count) { openURLsInNewTab(readFromClipboard(), false); }
+ ],
+ [
+ ["gt", "", ""],
+ "Go to next tab",
+ "Cycles to the first tab, when the last is selected. "+
+ "Count is supported, 3gt goes to the third tab.",
+ function(count) { tab_go(count > 0 ? count : 0); }
+ ],
+ [
+ ["gT", "", ""],
+ "Go to previous tab",
+ "Cycles to the last tab, when the first is selected. "+
+ "Count is supported, 3gt goes to the third tab.",
+ function(count) { tab_go(count > 0 ? count :-1); }
+ ],
+ [
+ ["o"],
+ "Open one or more URLs in the current tab",
+ "See :open for more details",
+ function(count) { openVimperatorBar('open '); }
+ ],
+ [
+ ["O"],
+ "Open one ore more URLs in the current tab, based on current location",
+ "Works like o, but preselects current URL in the :open query.",
+ function(count) { openVimperatorBar('open ' + getCurrentLocation()); }
+ ],
+ [
+ ["p", ""],
+ "Open (put) an URL based on the current Clipboard contents in the current buffer",
+ "You can also just select some non-URL text, and search for it with the default search engine with p",
+ function(count) { openURLs(readFromClipboard()); }
+ ],
+ [
+ ["P"],
+ "Open (put) an URL based on the current Clipboard contents in a new buffer",
+ "Works like p, but opens a new tab. "+
+ "Whether the new buffer is activated, depends on the 'activate' setting.",
+ function(count) { openURLsInNewTab(readFromClipboard(), true); }
+ ],
+ [
+ ["r"],
+ "Reload current page",
+ "Forces reloading of the current page.",
+ function(count) { reload(false); }
+ ],
+ [
+ ["R"],
+ "Reload all pages",
+ "Forces reloading of all open pages.",
+ function(count) { reload(true); }
+ ],
+ [
+ ["t"],
+ "Open one or more URLs in a new tab",
+ "Like o but open URLs in a new tab."+
+ "See :tabopen for more details",
+ function(count) { openVimperatorBar('tabopen '); }
+ ],
+ [
+ ["T"],
+ "Open one ore more URLs in a new tab, based on current location",
+ "Works like t, but preselects current URL in the :tabopen query.",
+ function(count) { openVimperatorBar('tabopen ' + getCurrentLocation()); }
+ ],
+ [
+ ["u"],
+ "Undo closing of a tab",
+ "If a count is given, don't close the last but the n'th last tab",
+ function(count) { execute_command(count, 'undo', false, ''); }
+ ],
+ [
+ ["y"],
+ "Yank current location to the Clipboard",
+ "Under UNIX the location is also put into the selection, which can be pasted with the middle mouse button.",
+ function(count) { yankCurrentLocation(); }
+ ],
+ [
+ ["zi"],
+ "Zoom in",
+ "Zoom in current web page by 25%. "+
+ "Currently no count supported.",
+ function(count) { zoom_in(1); }
+ ],
+ [
+ ["zI"],
+ "Zoom in more",
+ "Zoom in current web page by 100%. "+
+ "Currently no count supported.",
+ function(count) { zoom_in(4); }
+ ],
+ [
+ ["zo"],
+ "Zoom out",
+ "Zoom out current web page by 25%. "+
+ "Currently no count supported.",
+ function(count) { zoom_in(-1); }
+ ],
+ [
+ ["zO"],
+ "Zoom out more",
+ "Zoom out current web page by 100%. "+
+ "Currently no count supported.",
+ function(count) { zoom_in(-4); }
+ ],
+ [
+ ["zz"],
+ "Set zoom value of the webpage",
+ "150zz zooms to 150% text size. "+
+ "Zoom value can be between 25 and 500%. If it is omitted, zoom is reset to 100%.",
+ function(count) { zoom_to(count); }
+ ],
+ [
+ ["ZQ"],
+ "Quit Vimperator",
+ "Quit Vimperator, no matter how many tabs/windows are open. The session is not stored. " +
+ "Works like :qall.",
+ function(count) { quit(false); }
+ ],
+ [
+ ["ZZ"],
+ "Save the session and quit",
+ "Quit Vimperator, no matter how many tabs/windows are open. The session is stored. " +
+ "Works like :xall.",
+ function(count) { quit(true); }
+ ],
- /* scrolling commands */
- [
- ["0", "^"],
- "Scroll to the absolute left of the document",
- "Unlike in vim, 0 and ^ work exactly the same way.",
- function(count) { scrollBufferAbsolute(0, -1); }
- ],
- [
- ["$"],
- "Scroll to the absolute right of the document",
- null,
- function(count) { scrollBufferAbsolute(100, -1); }
- ],
- [
- ["gg", ""],
- "Goto the top of the document",
- "Count is supported, 35gg vertically goes to 35% of the document",
- function(count) { scrollBufferAbsolute(-1, count > 0 ? count : 0); }
- ],
- [
- ["G", ""],
- "Goto the end of the document",
- "Count is supported, 35G vertically goes to 35% of the document",
- function(count) { scrollBufferAbsolute(-1, count >= 0 ? count : 100); }
- ],
- [
- ["h", ""],
- "Scroll document to the left",
- "Count is supported: 10h will move 10 times as much to the left. "+
- "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
- function(count) { scrollBufferRelative(-1, 0); }
- ],
- [
- ["j", "", ""],
- "Scroll document down",
- "Count is supported: 10j will move 10 times as much down. "+
- "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
- function(count) { scrollBufferRelative(0, 1); }
- ],
- [
- ["k", "", ""],
- "Scroll document up",
- "Count is supported: 10k will move 10 times as much up. "+
- "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
- function(count) { scrollBufferRelative(0, -1); }
- ],
- [
- ["l", ""],
- "Scroll document to the right",
- "Count is supported: 10l will move 10 times as much to the right. "+
- "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
- function(count) { scrollBufferRelative(1, 0); }
- ],
- [
- ["", "", ""],
- "Scroll up a page",
- "Scroll up a full page of the current document. No count support for now.",
- function(count) { goDoCommand('cmd_scrollPageUp'); }
- ],
- [
- ["", "", ""],
- "Scroll down a page",
- "Scroll down a full page of the current document. No count support for now.",
- function(count) { goDoCommand('cmd_scrollPageDown'); }
- ],
+ /* scrolling commands */
+ [
+ ["0", "^"],
+ "Scroll to the absolute left of the document",
+ "Unlike in vim, 0 and ^ work exactly the same way.",
+ function(count) { scrollBufferAbsolute(0, -1); }
+ ],
+ [
+ ["$"],
+ "Scroll to the absolute right of the document",
+ null,
+ function(count) { scrollBufferAbsolute(100, -1); }
+ ],
+ [
+ ["gg", ""],
+ "Goto the top of the document",
+ "Count is supported, 35gg vertically goes to 35% of the document",
+ function(count) { scrollBufferAbsolute(-1, count > 0 ? count : 0); }
+ ],
+ [
+ ["G", ""],
+ "Goto the end of the document",
+ "Count is supported, 35G vertically goes to 35% of the document",
+ function(count) { scrollBufferAbsolute(-1, count >= 0 ? count : 100); }
+ ],
+ [
+ ["h", ""],
+ "Scroll document to the left",
+ "Count is supported: 10h will move 10 times as much to the left. "+
+ "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
+ function(count) { scrollBufferRelative(-1, 0); }
+ ],
+ [
+ ["j", "", ""],
+ "Scroll document down",
+ "Count is supported: 10j will move 10 times as much down. "+
+ "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
+ function(count) { scrollBufferRelative(0, 1); }
+ ],
+ [
+ ["k", "", ""],
+ "Scroll document up",
+ "Count is supported: 10k will move 10 times as much up. "+
+ "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
+ function(count) { scrollBufferRelative(0, -1); }
+ ],
+ [
+ ["l", ""],
+ "Scroll document to the right",
+ "Count is supported: 10l will move 10 times as much to the right. "+
+ "If the document cannot scroll more, a beep is emmited (unless 'beep' is turned off).",
+ function(count) { scrollBufferRelative(1, 0); }
+ ],
+ [
+ ["", "", ""],
+ "Scroll up a page",
+ "Scroll up a full page of the current document. No count support for now.",
+ function(count) { goDoCommand('cmd_scrollPageUp'); }
+ ],
+ [
+ ["", "", ""],
+ "Scroll down a page",
+ "Scroll down a full page of the current document. No count support for now.",
+ function(count) { goDoCommand('cmd_scrollPageDown'); }
+ ],
- /* history manipulation and jumplist */
- [
- [""],
- "Go to an older position in the jump list",
- "The jump list is just the browser history for now",
- function(count) { stepInHistory(count > 0 ? -1 * count : -1); }
- ],
- [
- [""],
- "Go to a newer position in the jump list",
- "The jump list is just the browser history for now",
- function(count) { stepInHistory(count > 0 ? count : 1); }
- ],
- [
- ["H", "", ""],
- "Go back in the browser history",
- "Count is supported, 3H goes back 3 steps.",
- function(count) { stepInHistory(count > 0 ? -1 * count : -1); }
- ],
- [
- ["L", "", ""],
- "Go forward in the browser history",
- "Count is supported, 3L goes forward 3 steps.",
- function(count) { stepInHistory(count > 0 ? count : 1); }
- ],
+ /* history manipulation and jumplist */
+ [
+ [""],
+ "Go to an older position in the jump list",
+ "The jump list is just the browser history for now",
+ function(count) { stepInHistory(count > 0 ? -1 * count : -1); }
+ ],
+ [
+ [""],
+ "Go to a newer position in the jump list",
+ "The jump list is just the browser history for now",
+ function(count) { stepInHistory(count > 0 ? count : 1); }
+ ],
+ [
+ ["H", "", ""],
+ "Go back in the browser history",
+ "Count is supported, 3H goes back 3 steps.",
+ function(count) { stepInHistory(count > 0 ? -1 * count : -1); }
+ ],
+ [
+ ["L", "", ""],
+ "Go forward in the browser history",
+ "Count is supported, 3L goes forward 3 steps.",
+ function(count) { stepInHistory(count > 0 ? count : 1); }
+ ],
- /* hint managment */
- [
- ["f"],
- "Start QuickHint mode",
- "In QuickHint mode, every hintable item (according to the 'hinttags' XPath query) is assigned a label. "+
- "If you then press the keys for a label, it is followed as soon as it can be uniquely identified and this mode is stopped. Or press <Esc> to stop this mode. "+
- "If you write the hint in ALLCAPS, the hint is followed in a background tab.",
- function(count) { hah.enableHahMode(HINT_MODE_QUICK); }
- ],
- [
- ["F"],
- "Start AlwaysHint mode",
- "In AlwaysHint mode, every hintable item (according to the 'hinttags' XPath query) is assigned a label. "+
- "If you then press the keys for a label, it is followed as soon as it can be uniquely identified. Labels stay active after following a hint in this mode, press <Esc> to stop this mode. "+
- "This hint mode is especially useful for browsing large sites like Forums as hints are automatically regenerated when switching to a new document. "+
- "Also, most Ctrl-prefixed shortcut keys are available in this mode for navigation.",
- function(count) { hah.enableHahMode(HINT_MODE_ALWAYS); }
- ],
- [
- [";"],
- "Start ExtendedHint mode",
- "ExtendedHint mode is useful, since in this mode you can yank link locations, or open them in a new window. "+
- "If you want to yank the location of hint AB, press ; to start this hint mode. "+
- "Then press AB to select the hint. Now press y to yank its location. "+
- "Actions for selected hints in ExtendedHint mode are: "+
- "
y to yank its location
"+
- "
o to open its location in the current tab
"+
- "
t to open its location in a new tab
"+
- "
O to open its location in an :open query (not implemented yet)
"+
- "
T to open its location in an :tabopen query (not implemented yet)
"+
- "
s to save its destination (not implemented yet)
"+
- "
<C-w> to open its destination in a new window
"+
- "
"+
- "Multiple hints can be seperated by commas where it makes sense. ;AB,AC,ADt opens AB, AC and AD in a new tab. "+
- "Hintable elements for this mode can be set in the 'extendedhinttags' XPath string.",
- function(count) { hah.enableHahMode(HINT_MODE_EXTENDED); }
- ],
+ /* hint managment */
+ [
+ ["f"],
+ "Start QuickHint mode",
+ "In QuickHint mode, every hintable item (according to the 'hinttags' XPath query) is assigned a label. "+
+ "If you then press the keys for a label, it is followed as soon as it can be uniquely identified and this mode is stopped. Or press <Esc> to stop this mode. "+
+ "If you write the hint in ALLCAPS, the hint is followed in a background tab.",
+ function(count) { hah.enableHahMode(HINT_MODE_QUICK); }
+ ],
+ [
+ ["F"],
+ "Start AlwaysHint mode",
+ "In AlwaysHint mode, every hintable item (according to the 'hinttags' XPath query) is assigned a label. "+
+ "If you then press the keys for a label, it is followed as soon as it can be uniquely identified. Labels stay active after following a hint in this mode, press <Esc> to stop this mode. "+
+ "This hint mode is especially useful for browsing large sites like Forums as hints are automatically regenerated when switching to a new document. "+
+ "Also, most Ctrl-prefixed shortcut keys are available in this mode for navigation.",
+ function(count) { hah.enableHahMode(HINT_MODE_ALWAYS); }
+ ],
+ [
+ [";"],
+ "Start ExtendedHint mode",
+ "ExtendedHint mode is useful, since in this mode you can yank link locations, or open them in a new window. "+
+ "If you want to yank the location of hint AB, press ; to start this hint mode. "+
+ "Then press AB to select the hint. Now press y to yank its location. "+
+ "Actions for selected hints in ExtendedHint mode are: "+
+ "
y to yank its location
"+
+ "
o to open its location in the current tab
"+
+ "
t to open its location in a new tab
"+
+ "
O to open its location in an :open query (not implemented yet)
"+
+ "
T to open its location in an :tabopen query (not implemented yet)
"+
+ "
s to save its destination (not implemented yet)
"+
+ "
<C-w> to open its destination in a new window
"+
+ "
"+
+ "Multiple hints can be seperated by commas where it makes sense. ;AB,AC,ADt opens AB, AC and AD in a new tab. "+
+ "Hintable elements for this mode can be set in the 'extendedhinttags' XPath string.",
+ function(count) { hah.enableHahMode(HINT_MODE_EXTENDED); }
+ ],
- /* search managment */
- [
- ["n"],
- "Find next",
- "Repeat the last \"/\" 1 time (until count is supported).",
- function(count) { gFindBar.onFindAgainCmd(); } // this does not work, why?: goDoCommand('cmd_findAgain'); }
- ],
- [
- ["N"],
- "Find previous",
- "Repeat the last \"/\" 1 time (until count is supported) in the opposite direction.",
- function(count) { gFindBar.onFindPreviousCmd(); } // this does not work, why?: goDoCommand('cmd_findPrevious'); }
- ],
+ /* search managment */
+ [
+ ["n"],
+ "Find next",
+ "Repeat the last \"/\" 1 time (until count is supported).",
+ function(count) { gFindBar.onFindAgainCmd(); } // this does not work, why?: goDoCommand('cmd_findAgain'); }
+ ],
+ [
+ ["N"],
+ "Find previous",
+ "Repeat the last \"/\" 1 time (until count is supported) in the opposite direction.",
+ function(count) { gFindBar.onFindPreviousCmd(); } // this does not work, why?: goDoCommand('cmd_findPrevious'); }
+ ],
- /* vimperator managment */
- [
- [""],
- "Open help window",
- "The default section is shown, if you need help for a specific topic, try :help <F1> (jumping to a specific section not implemented yet).",
- function(count) { help(null); }
- ],
- [
- [":"],
- "Start command line mode",
- "In command line mode, you can perform extended commands, which may require arguments.",
- function(count) { openVimperatorBar(null); }
- ],
- [
- ["I"],
- "Disable vimperator keys",
- "Starts an 'ignorekeys' mode, where all keys except <Esc> are passed to the next event handler. "+
- "This is especially useful, if JavaScript controlled forms like the RichEdit form fields of GMail don't work anymore. " +
- "To exit this mode, press <Esc>. If you also need to pass <Esc>"+
- "in this mode to the webpage, prepend it with <C-v>.",
- function(count) { addMode(MODE_ESCAPE_ALL_KEYS); echo("Vimperator keys disabled. Press to reenable.");}
- ],
- [
- [""], // if you ever add/remove keys here, also check them in the onVimperatorKeypress() function
- "Escape next key",
- "If you need to pass a certain key to a javascript form field or another extension prefix the key with <C-v>. "+
- "Also works to unshadow Firefox shortcuts like <C-o> which are otherwise hidden in Vimperator. "+
- "When in 'ignorekeys' mode (activated by <I>), <C-v> will pass the next key to Vimperator instead of the webpage.",
- function(count) { addMode(MODE_ESCAPE_ONE_KEY); }
- ],
- [
- ["", ""], // if you ever add/remove keys here, also check them in the onVimperatorKeypress() function
- "Cancel any operation",
- "Stops loading the current webpage and exits any command line or hint mode. "+
- "Also focuses the web page, in case a form field has focus, and eats our key presses.",
- function(count) { onEscape(); }
- ],
+ /* vimperator managment */
+ [
+ [""],
+ "Open help window",
+ "The default section is shown, if you need help for a specific topic, try :help <F1> (jumping to a specific section not implemented yet).",
+ function(count) { help(null); }
+ ],
+ [
+ [":"],
+ "Start command line mode",
+ "In command line mode, you can perform extended commands, which may require arguments.",
+ function(count) { openVimperatorBar(null); }
+ ],
+ [
+ ["I"],
+ "Disable vimperator keys",
+ "Starts an 'ignorekeys' mode, where all keys except <Esc> are passed to the next event handler. "+
+ "This is especially useful, if JavaScript controlled forms like the RichEdit form fields of GMail don't work anymore. " +
+ "To exit this mode, press <Esc>. If you also need to pass <Esc>"+
+ "in this mode to the webpage, prepend it with <C-v>.",
+ function(count) { addMode(MODE_ESCAPE_ALL_KEYS); echo("Vimperator keys disabled. Press to reenable.");}
+ ],
+ [
+ [""], // if you ever add/remove keys here, also check them in the onVimperatorKeypress() function
+ "Escape next key",
+ "If you need to pass a certain key to a javascript form field or another extension prefix the key with <C-v>. "+
+ "Also works to unshadow Firefox shortcuts like <C-o> which are otherwise hidden in Vimperator. "+
+ "When in 'ignorekeys' mode (activated by <I>), <C-v> will pass the next key to Vimperator instead of the webpage.",
+ function(count) { addMode(MODE_ESCAPE_ONE_KEY); }
+ ],
+ [
+ ["", ""], // if you ever add/remove keys here, also check them in the onVimperatorKeypress() function
+ "Cancel any operation",
+ "Stops loading the current webpage and exits any command line or hint mode. "+
+ "Also focuses the web page, in case a form field has focus, and eats our key presses.",
+ function(count) { onEscape(); }
+ ],
- /* quick bookmark access - will be customizable in future*/
- [
- ["'b"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLs('www.bwin.com'); }
- ],
- [
- ["'o"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLs('www.osnews.com'); }
- ],
- [
- ["'s"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLs('www.derstandard.at'); }
- ],
- [
- ["'w"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLs('wetter.orf.at'); }
- ],
- [
- ["'t"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLs('www.tvinfo.de'); }
- ],
- [
- ["\"b"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLsInNewTab('www.bwin.com'); }
- ],
- [
- ["\"o"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLsInNewTab('www.osnews.com'); }
- ],
- [
- ["\"s"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLsInNewTab('www.derstandard.at'); }
- ],
- [
- ["\"w"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLsInNewTab('wetter.orf.at'); }
- ],
- [
- ["\"t"],
- "These quick bookmarks will be customizable in future releases, ignore for now",
- null,
- function(count) { openURLsInNewTab('www.tvinfo.de'); }
- ]
+ /* quick bookmark access - will be customizable in future*/
+ [
+ ["'b"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLs('www.bwin.com'); }
+ ],
+ [
+ ["'o"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLs('www.osnews.com'); }
+ ],
+ [
+ ["'s"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLs('www.derstandard.at'); }
+ ],
+ [
+ ["'w"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLs('wetter.orf.at'); }
+ ],
+ [
+ ["'t"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLs('www.tvinfo.de'); }
+ ],
+ [
+ ["\"b"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLsInNewTab('www.bwin.com'); }
+ ],
+ [
+ ["\"o"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLsInNewTab('www.osnews.com'); }
+ ],
+ [
+ ["\"s"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLsInNewTab('www.derstandard.at'); }
+ ],
+ [
+ ["\"w"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLsInNewTab('wetter.orf.at'); }
+ ],
+ [
+ ["\"t"],
+ "These quick bookmarks will be customizable in future releases, ignore for now",
+ null,
+ function(count) { openURLsInNewTab('www.tvinfo.de'); }
+ ]
];/*}}}*/
var g_insert_mappings = [ /*{{{*/
- ["xxx", "todo"],
- ["", "delete word"],
- ["", "delete beginning"],
- ["", "go beginning"],
- ["", "go end"],
- ["", "cancel"]
+ ["xxx", "todo"],
+ ["", "delete word"],
+ ["", "delete beginning"],
+ ["", "go beginning"],
+ ["", "go end"],
+ ["", "cancel"]
]; /*}}}*/
/* [command, action, cancel_hint_mode, always_active] */
var g_hint_mappings = [ /*{{{*/
- /* hint action keys */
- ["o", "hah.openHints(false, false);", true, false],
- ["t", "hah.openHints(true, false);", true, false],
- ["", "hah.openHints(false, true );", true, false],
- ["s", "echoerr('Saving of links not yet implemented');", true, false],
- ["y", "hah.yankHints();", true, false],
- [",", "g_inputbuffer+=','; hah.setCurrentState(0);", false, true],
- [":", "openVimperatorBar(null);", false, true],
- /* movement keys */
- ["", "scrollBufferRelative(0, 1);", false, true],
- ["", "scrollBufferRelative(0, -1);", false, true],
- ["", "scrollBufferAbsolute(-1, 0);", false, true],
- ["", "scrollBufferAbsolute(-1, 100);", false, true],
- ["", "goDoCommand('cmd_scrollPageUp');", false, true],
- ["", "goDoCommand('cmd_scrollPageUp');", false, true],
- ["", "goDoCommand('cmd_scrollPageDown');", false, true],
- ["", "goDoCommand('cmd_scrollPageDown');", false, true],
- ["", "scrollBufferRelative(-1, 0);", false, true],
- ["", "scrollBufferRelative(0, 1);", false, true],
- ["", "scrollBufferRelative(0, -1);", false, true],
- ["", "scrollBufferRelative(1, 0);", false, true],
- /* tab managment */
- ["", "tab_go(0)", true, true], // same as gt, but no count supported
- ["", "tab_go(-1)", true, true],
- /* navigation */
- ["", "stepInHistory(g_count > 0 ? -1 * g_count : -1);", false, true],
- ["", "stepInHistory(g_count > 0 ? g_count : 1);", false, true],
- ["", "stepInHistory(g_count > 0 ? -1 * g_count : -1);", false, true],
- ["", "stepInHistory(g_count > 0 ? g_count : 1);", false, true],
- ["", "tab_remove(g_count, false, 0);", true, true],
- /* cancel hint mode keys */
- ["", "", true, true],
- ["", "", true, true],
- ["", "", true, true],
- ["", "", true, true]
+ /* hint action keys */
+ ["o", "hah.openHints(false, false);", true, false],
+ ["t", "hah.openHints(true, false);", true, false],
+ ["", "hah.openHints(false, true );", true, false],
+ ["s", "echoerr('Saving of links not yet implemented');", true, false],
+ ["y", "hah.yankHints();", true, false],
+ [",", "g_inputbuffer+=','; hah.setCurrentState(0);", false, true],
+ [":", "openVimperatorBar(null);", false, true],
+ /* movement keys */
+ ["", "scrollBufferRelative(0, 1);", false, true],
+ ["", "scrollBufferRelative(0, -1);", false, true],
+ ["", "scrollBufferAbsolute(-1, 0);", false, true],
+ ["", "scrollBufferAbsolute(-1, 100);", false, true],
+ ["", "goDoCommand('cmd_scrollPageUp');", false, true],
+ ["", "goDoCommand('cmd_scrollPageUp');", false, true],
+ ["", "goDoCommand('cmd_scrollPageDown');", false, true],
+ ["", "goDoCommand('cmd_scrollPageDown');", false, true],
+ ["", "scrollBufferRelative(-1, 0);", false, true],
+ ["", "scrollBufferRelative(0, 1);", false, true],
+ ["", "scrollBufferRelative(0, -1);", false, true],
+ ["", "scrollBufferRelative(1, 0);", false, true],
+ /* tab managment */
+ ["", "tab_go(0)", true, true], // same as gt, but no count supported
+ ["", "tab_go(-1)", true, true],
+ /* navigation */
+ ["", "stepInHistory(g_count > 0 ? -1 * g_count : -1);", false, true],
+ ["", "stepInHistory(g_count > 0 ? g_count : 1);", false, true],
+ ["", "stepInHistory(g_count > 0 ? -1 * g_count : -1);", false, true],
+ ["", "stepInHistory(g_count > 0 ? g_count : 1);", false, true],
+ ["", "tab_remove(g_count, false, 0);", true, true],
+ /* cancel hint mode keys */
+ ["", "", true, true],
+ ["", "", true, true],
+ ["", "", true, true],
+ ["", "", true, true]
]; /*}}}*/
var g_searchengines = [ /*{{{*/
- ["google", "http://www.google.com/search?num=100&q=%s"],
- ["chefkoch", "http://www.chefkoch.de/rezept-suche.php?Suchbegriff=%s"],
- ["dewiki", "http://de.wikipedia.org/wiki/%s"],
- ["discogs", "http://www.discogs.com/search?type=all&q=%s&btn=Search"],
- ["geizhals", "http://geizhals.at/?fs=%s"],
- ["imdb", "http://www.imdb.com/find?s=all&q=%s"],
- ["leo", "http://dict.leo.org/ende?search=%s"],
- ["wien", "http://members.aon.at/flole/vienna.html?UserQuery=%s&ResUser=1024&WidthUser=2000"],
- ["wiki", "http://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go"],
- ["vim", "http://www.google.com/custom?q=%s&sa=Google+Search&cof=LW%3A125%3BL%3Ahttp%3A%2F%2Fvim.sf.net%2Fimages%2Fvim.gif%3BLH%3A60%3BAH%3Acenter%3BGL%3A0%3BS%3Ahttp%3A%2F%2Fwww.vim.org%3BAWFID%3A057fa53529d52655%3B&domains=vim.sourceforge.net%3Bwww.vim.org%3Bvimdoc.sourceforge.net&sitesearch=vim.sourceforge.net"]
+ ["google", "http://www.google.com/search?num=100&q=%s"],
+ ["chefkoch", "http://www.chefkoch.de/rezept-suche.php?Suchbegriff=%s"],
+ ["dewiki", "http://de.wikipedia.org/wiki/%s"],
+ ["discogs", "http://www.discogs.com/search?type=all&q=%s&btn=Search"],
+ ["geizhals", "http://geizhals.at/?fs=%s"],
+ ["imdb", "http://www.imdb.com/find?s=all&q=%s"],
+ ["leo", "http://dict.leo.org/ende?search=%s"],
+ ["wien", "http://members.aon.at/flole/vienna.html?UserQuery=%s&ResUser=1024&WidthUser=2000"],
+ ["wiki", "http://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go"],
+ ["vim", "http://www.google.com/custom?q=%s&sa=Google+Search&cof=LW%3A125%3BL%3Ahttp%3A%2F%2Fvim.sf.net%2Fimages%2Fvim.gif%3BLH%3A60%3BAH%3Acenter%3BGL%3A0%3BS%3Ahttp%3A%2F%2Fwww.vim.org%3BAWFID%3A057fa53529d52655%3B&domains=vim.sourceforge.net%3Bwww.vim.org%3Bvimdoc.sourceforge.net&sitesearch=vim.sourceforge.net"]
];/*}}}*/
@@ -862,49 +862,49 @@ var g_searchengines = [ /*{{{*/
// otherwise a refernce to our command
function get_command(cmd) // {{{
{
- commands = [];
- var added;
- for (var i = 0; i < g_commands.length; i++, added = false)
- {
- for (var j = 0; j < g_commands[i][0].length; j++)
- {
- if (g_commands[i][0][j] == cmd)
- {
- return g_commands[i]; //exact command, returning it
- }
- if (g_commands[i][0][j].indexOf(cmd) == 0)
- {
- if (!added)
- {
- commands.push(g_commands[i]);
- added = true;
- }
- }
- }
- }
- if (commands.length == 1)
- return commands[0];
- return null;
+ commands = [];
+ var added;
+ for (var i = 0; i < g_commands.length; i++, added = false)
+ {
+ for (var j = 0; j < g_commands[i][0].length; j++)
+ {
+ if (g_commands[i][0][j] == cmd)
+ {
+ return g_commands[i]; //exact command, returning it
+ }
+ if (g_commands[i][0][j].indexOf(cmd) == 0)
+ {
+ if (!added)
+ {
+ commands.push(g_commands[i]);
+ added = true;
+ }
+ }
+ }
+ }
+ if (commands.length == 1)
+ return commands[0];
+ return null;
} // }}}
function execute_command(count, cmd, special, args) // {{{
{
- var command = get_command(cmd);
- if (command == null)
- {
- echoerr("E492: Not an editor command: " + cmd);
- focusContent(false, false);
- return;
- }
-
- if (command[3] == null)
- {
- echoerr("E666: Internal error: command[3] == null");
- return;
- }
+ var command = get_command(cmd);
+ if (command == null)
+ {
+ echoerr("E492: Not an editor command: " + cmd);
+ focusContent(false, false);
+ return;
+ }
+
+ if (command[3] == null)
+ {
+ echoerr("E666: Internal error: command[3] == null");
+ return;
+ }
- // valid command, call it:
- command[3].call(this, args, special, count);
+ // valid command, call it:
+ command[3].call(this, args, special, count);
} // }}}
@@ -913,30 +913,30 @@ function execute_command(count, cmd, special, args) // {{{
////////////////////////////////////////////////////////////////////////
function echo(msg)
{
- /* In Mozilla, the XUL textbox is implemented as a wrapper around an HTML
- * input element. The read only property '.inputField' holds a reference to this inner
- * input element. */
- var bar = command_line.inputField;
- var focused = document.commandDispatcher.focusedElement;
- if (focused && focused == bar)
- return;
+ /* In Mozilla, the XUL textbox is implemented as a wrapper around an HTML
+ * input element. The read only property '.inputField' holds a reference to this inner
+ * input element. */
+ var bar = command_line.inputField;
+ var focused = document.commandDispatcher.focusedElement;
+ if (focused && focused == bar)
+ return;
- bar.setAttribute("style","font-family: monospace;");
- bar.value = msg;
+ bar.setAttribute("style","font-family: monospace;");
+ bar.value = msg;
}
function echoerr(msg)
{
- /* In Mozilla, the XUL textbox is implemented as a wrapper around an HTML
- * input element. The read only property '.inputField' holds a reference to this inner
- * input element. */
- var bar = command_line.inputField;
- var focused = document.commandDispatcher.focusedElement;
- if (focused && focused == bar)
- return;
+ /* In Mozilla, the XUL textbox is implemented as a wrapper around an HTML
+ * input element. The read only property '.inputField' holds a reference to this inner
+ * input element. */
+ var bar = command_line.inputField;
+ var focused = document.commandDispatcher.focusedElement;
+ if (focused && focused == bar)
+ return;
- bar.setAttribute("style", "font-family: monospace; color:white; background-color:red; font-weight: bold");
- bar.value = msg;
+ bar.setAttribute("style", "font-family: monospace; color:white; background-color:red; font-weight: bold");
+ bar.value = msg;
}
////////////////////////////////////////////////////////////////////////
@@ -944,18 +944,18 @@ function echoerr(msg)
////////////////////////////////////////////////////////////////////////
function stepInHistory(steps)
{
- var index = getWebNavigation().sessionHistory.index + steps;
- if (index >= 0 && index < getWebNavigation().sessionHistory.count) {
- getWebNavigation().gotoIndex(index);
- }
- else
- {
- beep();
- if(index<0)
- echo("Already at beginning of history");
- else
- echo("Already at end of history");
- }
+ var index = getWebNavigation().sessionHistory.index + steps;
+ if (index >= 0 && index < getWebNavigation().sessionHistory.count) {
+ getWebNavigation().gotoIndex(index);
+ }
+ else
+ {
+ beep();
+ if(index<0)
+ echo("Already at beginning of history");
+ else
+ echo("Already at end of history");
+ }
}
function goUp() // FIXME
@@ -969,30 +969,30 @@ function goUp() // FIXME
////////////////////////////////////////////////////////////////////////
function openURLs(str)
{
- urls = stringToURLs(str);
- if (urls.length == 0)
- return false;
+ urls = stringToURLs(str);
+ if (urls.length == 0)
+ return false;
- getWebNavigation().loadURI(urls[0], nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
- for (var url=1; url < urls.length; url++)
- gBrowser.addTab(urls[url]);
+ getWebNavigation().loadURI(urls[0], nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
+ for (var url=1; url < urls.length; url++)
+ gBrowser.addTab(urls[url]);
- return true;
+ return true;
}
function openURLsInNewTab(str, activate)
{
- urls = stringToURLs(str);
- if (urls.length == 0)
- return null;
+ urls = stringToURLs(str);
+ if (urls.length == 0)
+ return null;
- var firsttab = getBrowser().addTab(urls[0]);
- if (activate)
- getBrowser().selectedTab = firsttab;
- for (url=1; url < urls.length; url++)
- gBrowser.addTab(urls[url]);
+ var firsttab = getBrowser().addTab(urls[0]);
+ if (activate)
+ getBrowser().selectedTab = firsttab;
+ for (url=1; url < urls.length; url++)
+ gBrowser.addTab(urls[url]);
- return firsttab;
+ return firsttab;
}
/* takes a string like 'google bla| www.osnews.com'
@@ -1000,26 +1000,26 @@ function openURLsInNewTab(str, activate)
*/
function stringToURLs(str)
{
- var urls = str.split(/\s*\|\s*/);
- begin: for(var url=0; url < urls.length; url++)
- {
- for(var i=0; i < g_searchengines.length; i++)
- {
- var regex = new RegExp("^" + g_searchengines[i][0] + "\\s+" + "(.+)");
- matches = urls[url].match(regex);
- if(matches != null)
- {
- urls[url] = g_searchengines[i][1].replace(/%s/, matches[1]);
- break begin;
- }
- }
+ var urls = str.split(/\s*\|\s*/);
+ begin: for(var url=0; url < urls.length; url++)
+ {
+ for(var i=0; i < g_searchengines.length; i++)
+ {
+ var regex = new RegExp("^" + g_searchengines[i][0] + "\\s+" + "(.+)");
+ matches = urls[url].match(regex);
+ if(matches != null)
+ {
+ urls[url] = g_searchengines[i][1].replace(/%s/, matches[1]);
+ break begin;
+ }
+ }
- /* if the string contains a space or does not conatain any of: .:/
- * open it with default searchengine */
- if (urls[url].match(/\s+/) || urls[url].match(/\.|:|\//) == null)
- urls[url] = g_searchengines[0][1].replace(/%s/, urls[url]);
- }
- return urls;
+ /* if the string contains a space or does not conatain any of: .:/
+ * open it with default searchengine */
+ if (urls[url].match(/\s+/) || urls[url].match(/\.|:|\//) == null)
+ urls[url] = g_searchengines[0][1].replace(/%s/, urls[url]);
+ }
+ return urls;
}
////////////////////////////////////////////////////////////////////////
@@ -1029,43 +1029,43 @@ function stringToURLs(str)
// function stolen from Conkeror
function focusNextFrame()
{
- try {
- var frames = window.content.frames;
- if (frames.length == 0)
- {
- echo("No frames found");
- beep();
- return;
- }
-
- var w = document.commandDispatcher.focusedWindow;
- var next = 0;
-
- // Find the next frame to focus
- for (var i=0; i= frames.length)
- next = 0;
- frames[next].focus();
- var oldbg = frames[next].document.bgColor;
- var oldstyle = frames[next].document.body.getAttribute("style");
- frames[next].document.bgColor = "red";
- frames[next].document.body.setAttribute("style", "background-color: #FF0000;");
-
- setTimeout(function(doc, bgcolor, style) {
- doc.bgColor = bgcolor;
- if (oldstyle == null)
- doc.body.removeAttribute("style");
- else
- doc.body.setAttribute("style", style);
- }, 150, frames[next].document, oldbg, oldstyle);
+ try {
+ var frames = window.content.frames;
+ if (frames.length == 0)
+ {
+ echo("No frames found");
+ beep();
+ return;
+ }
+
+ var w = document.commandDispatcher.focusedWindow;
+ var next = 0;
+
+ // Find the next frame to focus
+ for (var i=0; i= frames.length)
+ next = 0;
+ frames[next].focus();
+ var oldbg = frames[next].document.bgColor;
+ var oldstyle = frames[next].document.body.getAttribute("style");
+ frames[next].document.bgColor = "red";
+ frames[next].document.body.setAttribute("style", "background-color: #FF0000;");
+
+ setTimeout(function(doc, bgcolor, style) {
+ doc.bgColor = bgcolor;
+ if (oldstyle == null)
+ doc.body.removeAttribute("style");
+ else
+ doc.body.setAttribute("style", style);
+ }, 150, frames[next].document, oldbg, oldstyle);
- } catch(e) {alert(e);}
+ } catch(e) {alert(e);}
}
@@ -1075,28 +1075,28 @@ function focusNextFrame()
////////////////////////////////////////////////////////////////////////
function getCurrentLocation()
{
- return content.document.location.href;
+ return content.document.location.href;
}
function yankCurrentLocation()
{
- var loc = getCurrentLocation();
- copyToClipboard(loc);
- echo("Yanked " + loc);
+ var loc = getCurrentLocation();
+ copyToClipboard(loc);
+ echo("Yanked " + loc);
}
// return null, if no link with a href focused
function getCurrentLinkLocation()
{
- var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
- .getService(Components.interfaces.nsIWindowWatcher);
- if (window == ww.activeWindow && document.commandDispatcher.focusedElement)
- {
- var url = document.commandDispatcher.focusedElement.href;
- if (url)
- return url;
- }
- return null;
+ var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Components.interfaces.nsIWindowWatcher);
+ if (window == ww.activeWindow && document.commandDispatcher.focusedElement)
+ {
+ var url = document.commandDispatcher.focusedElement.href;
+ if (url)
+ return url;
+ }
+ return null;
}
////////////////////////////////////////////////////////////////////////
@@ -1106,72 +1106,72 @@ function getCurrentLinkLocation()
// converts that string to a useful url and title, and calls addBookmark
function bmadd(str)
{
- var res = new Object();
- if (parseBookmarkString(str, res))
- {
- if(res.url == null)
- res.url = getCurrentLocation();
- if(res.title == null) // XXX: maybe use current title of webpage
- res.title = res.url;
+ var res = new Object();
+ if (parseBookmarkString(str, res))
+ {
+ if(res.url == null)
+ res.url = getCurrentLocation();
+ if(res.title == null) // XXX: maybe use current title of webpage
+ res.title = res.url;
- addBookmark(res.title, res.url);
- echo("Bookmark `" + res.url + "' added");
- }
- else
- echo("Usage: :bmadd [-t \"My Title\"] [-T tag1,tag2] ");
+ addBookmark(res.title, res.url);
+ echo("Bookmark `" + res.url + "' added");
+ }
+ else
+ echo("Usage: :bmadd [-t \"My Title\"] [-T tag1,tag2] ");
}
function bmdel(str)
{
- var res = new Object();
- if (parseBookmarkString(str, res))
- {
- if(res.url == null)
- res.url = getCurrentLocation();
+ var res = new Object();
+ if (parseBookmarkString(str, res))
+ {
+ if(res.url == null)
+ res.url = getCurrentLocation();
- var del = deleteBookmark(res.url);
- echo(del + " bookmark(s) with url `" + res.url + "' deleted");
- }
- else
- echo("Usage: :bmdel ");
+ var del = deleteBookmark(res.url);
+ echo(del + " bookmark(s) with url `" + res.url + "' deleted");
+ }
+ else
+ echo("Usage: :bmdel ");
}
function bmshow(filter, fullmode)
{
- if (fullmode)
- openURLsInNewTab("chrome://browser/content/bookmarks/bookmarksPanel.xul", true);
- else
- {
- var items = get_bookmark_completions(filter);
- preview_window_fill(items);
- preview_window.hidden = false;
- }
+ if (fullmode)
+ openURLsInNewTab("chrome://browser/content/bookmarks/bookmarksPanel.xul", true);
+ else
+ {
+ var items = get_bookmark_completions(filter);
+ preview_window_fill(items);
+ preview_window.hidden = false;
+ }
}
function hsshow(filter, fullmode)
{
- if (fullmode)
- openURLsInNewTab("chrome://browser/content/history/history-panel.xul", true);
- else
- {
- var items = get_history_completions(filter);
- preview_window_fill(items);
- preview_window.hidden = false;
- }
+ if (fullmode)
+ openURLsInNewTab("chrome://browser/content/history/history-panel.xul", true);
+ else
+ {
+ var items = get_history_completions(filter);
+ preview_window_fill(items);
+ preview_window.hidden = false;
+ }
}
function bushow(filter, in_comp_window)
{
- if (in_comp_window) // fill the completion list
- {
- g_completions = get_buffer_completions(filter);
- completion_fill_list(0);
- completion_show_list();
- }
- else // in the preview window
- {
- var items = get_buffer_completions(filter);
- preview_window_fill(items);
- preview_window.hidden = false;
- }
+ if (in_comp_window) // fill the completion list
+ {
+ g_completions = get_buffer_completions(filter);
+ completion_fill_list(0);
+ completion_show_list();
+ }
+ else // in the preview window
+ {
+ var items = get_buffer_completions(filter);
+ preview_window_fill(items);
+ preview_window.hidden = false;
+ }
}
@@ -1230,19 +1230,19 @@ function show_location_marks(mark)
*/
function tab_go(index)
{
- if (index < 0)
- getBrowser().mTabContainer.advanceSelectedTab(-1, true);
- else if (index == 0)
- getBrowser().mTabContainer.advanceSelectedTab(1, true);
- else
- {
- if (getBrowser().mTabContainer.childNodes.length < index)
- beep();
- else
- getBrowser().mTabContainer.selectedIndex = index-1;
- }
+ if (index < 0)
+ getBrowser().mTabContainer.advanceSelectedTab(-1, true);
+ else if (index == 0)
+ getBrowser().mTabContainer.advanceSelectedTab(1, true);
+ else
+ {
+ if (getBrowser().mTabContainer.childNodes.length < index)
+ beep();
+ else
+ getBrowser().mTabContainer.selectedIndex = index-1;
+ }
- updateStatusbar();
+ updateStatusbar();
}
/* quit_on_last_tab = 1: quit without saving session
@@ -1250,15 +1250,15 @@ function tab_go(index)
*/
function tab_remove(count, focus_left_tab, quit_on_last_tab)
{
- if (count < 1) count = 1;
+ if (count < 1) count = 1;
- if (quit_on_last_tab >= 1 && getBrowser().mTabContainer.childNodes.length <= count)
- quit(quit_on_last_tab == 2);
+ if (quit_on_last_tab >= 1 && getBrowser().mTabContainer.childNodes.length <= count)
+ quit(quit_on_last_tab == 2);
- var tab = getBrowser().mCurrentTab;
- if(focus_left_tab && tab.previousSibling)
- gBrowser.mTabContainer.selectedIndex--;
- getBrowser().removeTab(tab);
+ var tab = getBrowser().mCurrentTab;
+ if(focus_left_tab && tab.previousSibling)
+ gBrowser.mTabContainer.selectedIndex--;
+ getBrowser().removeTab(tab);
}
////////////////////////////////////////////////////////////////////////
@@ -1267,27 +1267,27 @@ function tab_remove(count, focus_left_tab, quit_on_last_tab)
function scrollBufferRelative(right, down)
{
var win = document.commandDispatcher.focusedWindow;
- if (g_count < 1)
- g_count = 1;
+ if (g_count < 1)
+ g_count = 1;
- // beep if we can't go there
- if (down > 0)
- {
- if (win.scrollY == win.scrollMaxY) beep();
- }
- else if (down < 0)
- {
- if (win.scrollY == 0) beep();
- }
+ // beep if we can't go there
+ if (down > 0)
+ {
+ if (win.scrollY == win.scrollMaxY) beep();
+ }
+ else if (down < 0)
+ {
+ if (win.scrollY == 0) beep();
+ }
- if (right > 0)
- {
- if (win.scrollX == win.scrollMaxX) beep();
- }
- else if (right < 0)
- {
- if (win.scrollX == 0) beep();
- }
+ if (right > 0)
+ {
+ if (win.scrollX == win.scrollMaxX) beep();
+ }
+ else if (right < 0)
+ {
+ if (win.scrollX == 0) beep();
+ }
win.scrollBy(g_count * right * 20, g_count * down * 20);
}
@@ -1296,17 +1296,17 @@ function scrollBufferRelative(right, down)
function scrollBufferAbsolute(horizontal, vertical)
{
var win = document.commandDispatcher.focusedWindow;
- var horiz, vert;
+ var horiz, vert;
- if (horizontal < 0)
- horiz = win.scrollX;
- else
- horiz = win.scrollMaxX/100 * horizontal;
+ if (horizontal < 0)
+ horiz = win.scrollX;
+ else
+ horiz = win.scrollMaxX/100 * horizontal;
- if (vertical < 0)
- vert = win.scrollY;
- else
- vert = win.scrollMaxY/100 * vertical;
+ if (vertical < 0)
+ vert = win.scrollY;
+ else
+ vert = win.scrollMaxY/100 * vertical;
win.scrollTo(horiz, vert);
}
@@ -1318,59 +1318,59 @@ function scrollBufferAbsolute(horizontal, vertical)
/* also used to zoom out, when factor is negative */
function zoom_in(factor)
{
- if (g_count < 1)
- g_count = 1;
+ if (g_count < 1)
+ g_count = 1;
- //ZoomManager.prototype.getInstance().enlarge();
- var zoomMgr = ZoomManager.prototype.getInstance();
- if (zoomMgr.textZoom == 25 && factor < 0)
- {
- echoerr("Minimum zoom level of 25% reached");
- beep();
- }
- else if (zoomMgr.textZoom == 500 && factor > 0)
- {
- echoerr("Maximum zoom level of 500% reached");
- beep();
- }
- else
- {
- var value = zoomMgr.textZoom + factor*g_count*25;
- if (value < 25) value = 25;
- if (value > 500) value = 500;
+ //ZoomManager.prototype.getInstance().enlarge();
+ var zoomMgr = ZoomManager.prototype.getInstance();
+ if (zoomMgr.textZoom == 25 && factor < 0)
+ {
+ echoerr("Minimum zoom level of 25% reached");
+ beep();
+ }
+ else if (zoomMgr.textZoom == 500 && factor > 0)
+ {
+ echoerr("Maximum zoom level of 500% reached");
+ beep();
+ }
+ else
+ {
+ var value = zoomMgr.textZoom + factor*g_count*25;
+ if (value < 25) value = 25;
+ if (value > 500) value = 500;
- zoomMgr.textZoom = value;
- echo("Zoom value: " + value + "%");
- }
+ zoomMgr.textZoom = value;
+ echo("Zoom value: " + value + "%");
+ }
}
function zoom_to(value)
{
- var zoomMgr = ZoomManager.prototype.getInstance();
- if (!value || value <= 0)
- value = 100;
+ var zoomMgr = ZoomManager.prototype.getInstance();
+ if (!value || value <= 0)
+ value = 100;
- // convert to int, if string was given
- if (typeof(value) != "number")
- {
- oldval = value;
- value = parseInt(oldval, 10);
- if (isNaN(value))
- {
- echoerr("Cannot convert " + oldval + " to a number");
- return;
- }
- }
+ // convert to int, if string was given
+ if (typeof(value) != "number")
+ {
+ oldval = value;
+ value = parseInt(oldval, 10);
+ if (isNaN(value))
+ {
+ echoerr("Cannot convert " + oldval + " to a number");
+ return;
+ }
+ }
- if (value < 25 || value > 500)
- {
- echoerr("Zoom value must be between 25% and 500%");
- beep();
- return;
- }
+ if (value < 25 || value > 500)
+ {
+ echoerr("Zoom value must be between 25% and 500%");
+ beep();
+ return;
+ }
- zoomMgr.textZoom = value;
- echo("Zoom value: " + value + "%");
+ zoomMgr.textZoom = value;
+ echo("Zoom value: " + value + "%");
}
@@ -1380,217 +1380,217 @@ function zoom_to(value)
function copyToClipboard(str)
{
- var clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
- .getService(Components.interfaces.nsIClipboardHelper);
- clipboardHelper.copyString(str);
+ var clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
+ .getService(Components.interfaces.nsIClipboardHelper);
+ clipboardHelper.copyString(str);
}
function beep()
{
- if (get_pref("beep") == false)
- return;
+ if (get_pref("beep") == false)
+ return;
- var gBeepService = Components.classes['@mozilla.org/sound;1']
- .getService(Components.interfaces.nsISound);
+ var gBeepService = Components.classes['@mozilla.org/sound;1']
+ .getService(Components.interfaces.nsISound);
- if (gBeepService)
- gBeepService.beep();
- else
- echoerr('no beep service found');
+ if (gBeepService)
+ gBeepService.beep();
+ else
+ echoerr('no beep service found');
}
// quit vimperator, no matter how many tabs/windows are open
function quit(save_session)
{
- if (save_history)
- set_firefox_pref("browser.sessionstore.resume_session_once", true);
+ if (save_history)
+ set_firefox_pref("browser.sessionstore.resume_session_once", true);
- goQuitApplication();
+ goQuitApplication();
}
function reload(all_tabs)
{
- if (all_tabs)
- getBrowser().reloadAllTabs();
- else
- BrowserReload();
+ if (all_tabs)
+ getBrowser().reloadAllTabs();
+ else
+ BrowserReload();
}
function restart()
{
- // if (!arguments[1]) return;
- const nsIAppStartup = Components.interfaces.nsIAppStartup;
+ // if (!arguments[1]) return;
+ const nsIAppStartup = Components.interfaces.nsIAppStartup;
- // Notify all windows that an application quit has been requested.
- var os = Components.classes["@mozilla.org/observer-service;1"]
- .getService(Components.interfaces.nsIObserverService);
- var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
- .createInstance(Components.interfaces.nsISupportsPRBool);
- os.notifyObservers(cancelQuit, "quit-application-requested", null);
+ // Notify all windows that an application quit has been requested.
+ var os = Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService);
+ var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
+ .createInstance(Components.interfaces.nsISupportsPRBool);
+ os.notifyObservers(cancelQuit, "quit-application-requested", null);
- // Something aborted the quit process.
- if (cancelQuit.data)
- return;
+ // Something aborted the quit process.
+ if (cancelQuit.data)
+ return;
- // Notify all windows that an application quit has been granted.
- os.notifyObservers(null, "quit-application-granted", null);
+ // Notify all windows that an application quit has been granted.
+ os.notifyObservers(null, "quit-application-granted", null);
- // Enumerate all windows and call shutdown handlers
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var windows = wm.getEnumerator(null);
- while (windows.hasMoreElements())
- {
- var win = windows.getNext();
- if (("tryToClose" in win) && !win.tryToClose())
- return;
- }
- Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup)
- .quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);
+ // Enumerate all windows and call shutdown handlers
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var windows = wm.getEnumerator(null);
+ while (windows.hasMoreElements())
+ {
+ var win = windows.getNext();
+ if (("tryToClose" in win) && !win.tryToClose())
+ return;
+ }
+ Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup)
+ .quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);
}
// sets an vimperator option
function set(args, special)
{
- if (args == "")
- {
- if (special) // open firefox settings gui dialog
- openURLsInNewTab("chrome://browser/content/preferences/preferences.xul", true);
- else
- openURLsInNewTab("about:config", true);
- }
- else
- {
- var matches = args.match(/^\s*(no)?([a-z]+)(\?)?(([+-])?=(.*))?/);
- if (!matches)
- {
- echoerr("E518: Unknown option: " + args);
- return;
- }
+ if (args == "")
+ {
+ if (special) // open firefox settings gui dialog
+ openURLsInNewTab("chrome://browser/content/preferences/preferences.xul", true);
+ else
+ openURLsInNewTab("about:config", true);
+ }
+ else
+ {
+ var matches = args.match(/^\s*(no)?([a-z]+)(\?)?(([+-])?=(.*))?/);
+ if (!matches)
+ {
+ echoerr("E518: Unknown option: " + args);
+ return;
+ }
- var no = true; if (matches[1] == undefined) no = false;
- var opt = matches[2];
- var setting = get_setting(opt);
- if (!setting)
- {
- echoerr("E518: Unknown option: " + opt);
- return;
- }
+ var no = true; if (matches[1] == undefined) no = false;
+ var opt = matches[2];
+ var setting = get_setting(opt);
+ if (!setting)
+ {
+ echoerr("E518: Unknown option: " + opt);
+ return;
+ }
- var get = false; if (matches[3] != undefined ||
- (setting[5] != 'boolean' && matches[4] == undefined)) get = true;
- var oper = matches[5];
- var val = matches[6]; if (val == undefined) val = "";
+ var get = false; if (matches[3] != undefined ||
+ (setting[5] != 'boolean' && matches[4] == undefined)) get = true;
+ var oper = matches[5];
+ var val = matches[6]; if (val == undefined) val = "";
- // read access
- if (get)
- {
- var cur_val = setting[4].call(this);
- echo(" " + setting[0][0] + "=" + cur_val);
- }
- // write access
- else
- {
- var type = setting[5];
- if (type == "boolean")
- {
- setting[3].call(this, !no);
- }
- else if (type == "number")
- {
- var num = parseInt(val, 10);
- if (isNaN(num))
- echoerr("Invalid argument type to option " + setting[0][0] + ": Expects number");
- else
- {
- var cur_val = setting[4].call(this);
- if (oper == '+') num = cur_val + num;
- if (oper == '-') num = cur_val - num;
- if (setting[7] != null && setting[7].call(this, num) == false)
- echoerr("Invalid argument to option " + setting[0][0] + ": Check help for more details");
- else // all checks passed, execute option handler
- setting[3].call(this, num);
- }
- }
- else if (type == "charlist" || type == "stringlist" || type == "string")
- {
- var cur_val = setting[4].call(this);
- if (type == "charlist" || type == "string")
- {
- if (oper == '+' && !cur_val.match(val))
- val = cur_val + val;
- if (oper == '-') val = cur_val.replace(val, '');
- }
- else
- {
- if (oper == '+' && !cur_val.match(val))
- val = cur_val + ',' + val;
- if (oper == '-')
- {
- val = cur_val.replace(new RegExp(',?' + val), '');
- val = val.replace(/^,?/, '');
- }
- }
- if (setting[7] != null && setting[7].call(this, val) == false)
- echoerr("Invalid argument to option " + setting[0][0] + ": Check help for more details");
- else // all checks passed, execute option handler
- setting[3].call(this, val);
- }
- else
- echoerr("Internal error, option format `" + type + "' not supported");
- }
- }
+ // read access
+ if (get)
+ {
+ var cur_val = setting[4].call(this);
+ echo(" " + setting[0][0] + "=" + cur_val);
+ }
+ // write access
+ else
+ {
+ var type = setting[5];
+ if (type == "boolean")
+ {
+ setting[3].call(this, !no);
+ }
+ else if (type == "number")
+ {
+ var num = parseInt(val, 10);
+ if (isNaN(num))
+ echoerr("Invalid argument type to option " + setting[0][0] + ": Expects number");
+ else
+ {
+ var cur_val = setting[4].call(this);
+ if (oper == '+') num = cur_val + num;
+ if (oper == '-') num = cur_val - num;
+ if (setting[7] != null && setting[7].call(this, num) == false)
+ echoerr("Invalid argument to option " + setting[0][0] + ": Check help for more details");
+ else // all checks passed, execute option handler
+ setting[3].call(this, num);
+ }
+ }
+ else if (type == "charlist" || type == "stringlist" || type == "string")
+ {
+ var cur_val = setting[4].call(this);
+ if (type == "charlist" || type == "string")
+ {
+ if (oper == '+' && !cur_val.match(val))
+ val = cur_val + val;
+ if (oper == '-') val = cur_val.replace(val, '');
+ }
+ else
+ {
+ if (oper == '+' && !cur_val.match(val))
+ val = cur_val + ',' + val;
+ if (oper == '-')
+ {
+ val = cur_val.replace(new RegExp(',?' + val), '');
+ val = val.replace(/^,?/, '');
+ }
+ }
+ if (setting[7] != null && setting[7].call(this, val) == false)
+ echoerr("Invalid argument to option " + setting[0][0] + ": Check help for more details");
+ else // all checks passed, execute option handler
+ setting[3].call(this, val);
+ }
+ else
+ echoerr("Internal error, option format `" + type + "' not supported");
+ }
+ }
}
function source(filename)
{
- echoerr("Soucing not yet implemented");
+ echoerr("Soucing not yet implemented");
}
function help(section)
{
- var doc = window.content.document;
+ var doc = window.content.document;
- var style = "";
- var header = '
Vimperator
' +
- '
First there was a Navigator, then there was an Explorer. Later it was time for a Konqueror. Now it\'s time for an Imperator, the VIMperator :)
'
+ var header = '
Vimperator
' +
+ '
First there was a Navigator, then there was an Explorer. Later it was time for a Konqueror. Now it\'s time for an Imperator, the VIMperator :)
'
- var introduction = '
Introduction
' +
- '
Vimperator is a free browser add-on for Firefox, which makes it look and behave like the Vim text editor. ' +
- 'It has similar key bindings, and you could call it a modal webbrowser, as key bindings differ according to which mode you are in.
' +
+ var introduction = '
Introduction
' +
+ '
Vimperator is a free browser add-on for Firefox, which makes it look and behave like the Vim text editor. ' +
+ 'It has similar key bindings, and you could call it a modal webbrowser, as key bindings differ according to which mode you are in.
' +
- '
Warning: To provide the most authentic Vim experience, the Firefox menubar and toolbar were hidden. If you really need them, type: :set guioptions=mT to get it back. ' +
- 'If you don\'t like Vimperator at all, you can uninstall it by typing :addons and remove/disable it. ' +
- 'If you like it, but can\'t remember the shortcuts, press F1 or :help to get this help window back.
' +
+ '
Warning: To provide the most authentic Vim experience, the Firefox menubar and toolbar were hidden. If you really need them, type: :set guioptions=mT to get it back. ' +
+ 'If you don\'t like Vimperator at all, you can uninstall it by typing :addons and remove/disable it. ' +
+ 'If you like it, but can\'t remember the shortcuts, press F1 or :help to get this help window back.
' +
- '
Since Vimperator\'s GUI is embedded into a toolbar, it may look too 3D-like with the default theme. For best experience, I therefore recommend the Whitehart theme.
' +
+ '
Since Vimperator\'s GUI is embedded into a toolbar, it may look too 3D-like with the default theme. For best experience, I therefore recommend the Whitehart theme.
' +
- '
Vimperator was written by Martin Stubenschrott. If you appreciate my work on Vimperator, you can either send me greetings, patches ' +
- 'or make a donation: ' +
+ '
Vimperator was written by Martin Stubenschrott. If you appreciate my work on Vimperator, you can either send me greetings, patches ' +
+ 'or make a donation: ' +
- '
' +
+ '' +
+ '' +
+ '' +
- 'Of course as a believer in free open source software, only make a donation if you really like Vimperator, and the money doesn\'t hurt - otherwise just use it, recommend it and like it :)'
+ 'Of course as a believer in free open source software, only make a donation if you really like Vimperator, and the money doesn\'t hurt - otherwise just use it, recommend it and like it :)'
// xxx: for firebug: :exec Firebug.toggleBar(true)
- /* commands = array where help information is located
- * color = used for background of the table
- * beg = string which is printed before the commmand/setting/mapping name
- * end = string which is printed after the commmand/setting/mapping name
- * func = called with 'commands' array and result which is a sring is prepended to the help text
- */
- function makeHelpString(commands, color, beg, end, func)
- {
- var ret = "";
- for (var i=0; i < commands.length; i++)
- {
- ret += '
';
- var command = "
";
- for (var j=0; j < commands[i][0].length; j++)
- {
- var cmd_name = commands[i][0][j];
- cmd_name = cmd_name.replace(//g, ">");
- if (j==0) // color the first item differently
- command += "" +beg+ cmd_name +end+ ' ';
- else
- command += "" +beg+ cmd_name +end+ ' ';
- }
- ret += command + '
';
- if (commands[i][1])
- ret += '' + commands[i][1] + ' '; // the short description
- if (func)
- ret += func.call(this, commands[i]);
- if (commands[i][2])
- {
- if(func)
- ret += " "
- ret += commands[i][2]; // the help description
- }
- ret += '
';
- }
- return ret;
- }
- function makeSettingsHelpString(command)
- {
- var ret = "";
- ret = command[5] + " (default: ";
- if (command[5] == "boolean")
- {
- if(command[6] == true)
- ret += "on";
- else
- ret += "off";
- }
- else
- ret += command[6];
+ /* commands = array where help information is located
+ * color = used for background of the table
+ * beg = string which is printed before the commmand/setting/mapping name
+ * end = string which is printed after the commmand/setting/mapping name
+ * func = called with 'commands' array and result which is a sring is prepended to the help text
+ */
+ function makeHelpString(commands, color, beg, end, func)
+ {
+ var ret = "";
+ for (var i=0; i < commands.length; i++)
+ {
+ ret += '
';
+ var command = "
";
+ for (var j=0; j < commands[i][0].length; j++)
+ {
+ var cmd_name = commands[i][0][j];
+ cmd_name = cmd_name.replace(//g, ">");
+ if (j==0) // color the first item differently
+ command += "" +beg+ cmd_name +end+ ' ';
+ else
+ command += "" +beg+ cmd_name +end+ ' ';
+ }
+ ret += command + '
';
+ if (commands[i][1])
+ ret += '' + commands[i][1] + ' '; // the short description
+ if (func)
+ ret += func.call(this, commands[i]);
+ if (commands[i][2])
+ {
+ if(func)
+ ret += " "
+ ret += commands[i][2]; // the help description
+ }
+ ret += '
';
+ }
+ return ret;
+ }
+ function makeSettingsHelpString(command)
+ {
+ var ret = "";
+ ret = command[5] + " (default: ";
+ if (command[5] == "boolean")
+ {
+ if(command[6] == true)
+ ret += "on";
+ else
+ ret += "off";
+ }
+ else
+ ret += command[6];
- ret += ")";
- return ret;
- }
-
- var mappings = '
Mappings
'+
- '
The denotion of modifier keys is like in Vim, so C- means the Control key, M- the Meta key, A- the Alt key and S- the Shift key.