1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-03-31 02:13:35 +02:00

Merge branch 'master' of kmaglione@git.vimperator.org:/git/vimperator/liberator

This commit is contained in:
Kris Maglione
2009-08-27 12:29:00 -04:00
50 changed files with 336 additions and 529 deletions

View File

@@ -10,7 +10,7 @@ DOCLANG = $(shell basename `pwd` | $(AWK) -F- '{ print ($$1 ~ /^[a-z][a-z]$$/)
SRC_FILES = $(wildcard *.txt) SRC_FILES = $(wildcard *.txt)
FILES = $(SRC_FILES:%.txt=%.html) FILES = $(SRC_FILES:%.txt=%.html)
DEPS = $(wildcard asciidoc.conf lang-$(DOCLANG).conf) DEPS = $(wildcard lang-$(DOCLANG).conf) ${BASE}/asciidoc.conf $(BASE)/Makefile.doc
DOC_FILES = $(FILES) version.html DOC_FILES = $(FILES) version.html
@@ -50,7 +50,9 @@ check-asciidoc:
@$(ASCIIDOC) --version | $(AWK) '{ exit $$2 !~ /^8\.4\./ }' || \ @$(ASCIIDOC) --version | $(AWK) '{ exit $$2 !~ /^8\.4\./ }' || \
echo >&2 "Warning: asciidoc versions other than 8.4.x are unsupported" echo >&2 "Warning: asciidoc versions other than 8.4.x are unsupported"
version.html: ../../NEWS $(BASE)/Makefile.doc $(DEPS) all.html: $(SRC_FILES)
version.html: ../../NEWS $(DEPS)
@echo "DOC locale/$(LOCALE)/$@" @echo "DOC locale/$(LOCALE)/$@"
# NOTE: asciidoc doesn't source the conf file implicitly when processing stdin # NOTE: asciidoc doesn't source the conf file implicitly when processing stdin
sed -e '1i\ sed -e '1i\
@@ -60,7 +62,7 @@ heading:Version{nbsp}information[version-information]' \
/' ../../NEWS | \ /' ../../NEWS | \
${ASCIIDOC} -f $(BASE)/asciidoc.conf -a doctitle=version.html -o version.html - ${ASCIIDOC} -f $(BASE)/asciidoc.conf -a doctitle=version.html -o version.html -
$(FILES): %.html: %.txt $(BASE)/Makefile.doc $(DEPS) $(FILES): %.html: %.txt $(DEPS)
@echo "DOC locale/$(LOCALE)/$@" @echo "DOC locale/$(LOCALE)/$@"
$(ASCIIDOC) -f $(BASE)/asciidoc.conf -a configname=$(NAME) --unsafe -a linkcss -a quirks! -a lang=$(DOCLANG) -a doctitle="$$(basename $@)" -o $@ $< $(ASCIIDOC) -f $(BASE)/asciidoc.conf -a configname=$(NAME) --unsafe -a linkcss -a quirks! -a lang=$(DOCLANG) -a doctitle="$$(basename $@)" -o $@ $<

File diff suppressed because one or more lines are too long

View File

@@ -534,10 +534,6 @@ function Bookmarks() //{{{
process: [template.icon, template.bookmarkDescription] process: [template.icon, template.bookmarkDescription]
}), }),
// if "bypassCache" is true, it will force a reload of the bookmarks database
// on my PC, it takes about 1ms for each bookmark to load, so loading 1000 bookmarks
// takes about 1 sec
// Huh? --djk
// TODO: why is this a filter? --djk // TODO: why is this a filter? --djk
get: function get(filter, tags, maxItems, extra) get: function get(filter, tags, maxItems, extra)
{ {

View File

@@ -204,7 +204,7 @@ Command.prototype = {
return; return;
args.count = count; args.count = count;
args.bang = bang; args.bang = bang;
self.action.call(self, args, bang, count, modifiers); self.action.call(self, args, modifiers);
} }
if (this.hereDoc) if (this.hereDoc)
@@ -562,6 +562,9 @@ function Commands() //{{{
// : it might be nice to be able to specify that certain quoting // : it might be nice to be able to specify that certain quoting
// should be disabled E.g. backslash without having to resort to // should be disabled E.g. backslash without having to resort to
// using literal etc. // using literal etc.
// : error messages should be configurable or else we can ditch
// Vim compatibility but it actually gives useful messages
// sometimes rather than just "Invalid arg"
// : I'm not sure documenting the returned object here, and // : I'm not sure documenting the returned object here, and
// elsewhere, as type Args rather than simply Object makes sense, // elsewhere, as type Args rather than simply Object makes sense,
// especially since it is further augmented for use in // especially since it is further augmented for use in
@@ -1009,6 +1012,7 @@ function Commands() //{{{
} }
// TODO: offer completion.ex? // TODO: offer completion.ex?
// : make this config specific
var completeOptionMap = { var completeOptionMap = {
abbreviation: "abbreviation", altstyle: "alternateStyleSheet", abbreviation: "abbreviation", altstyle: "alternateStyleSheet",
bookmark: "bookmark", buffer: "buffer", color: "colorScheme", bookmark: "bookmark", buffer: "buffer", color: "colorScheme",
@@ -1058,7 +1062,7 @@ function Commands() //{{{
} }
catch (e) catch (e)
{ {
// FIXME: should be pushed to the MOW liberator.echo(":" + this.name + " ...");
liberator.echoerr("E117: Unknown function: " + completeOpt); liberator.echoerr("E117: Unknown function: " + completeOpt);
liberator.log(e); liberator.log(e);
return undefined; return undefined;

View File

@@ -78,12 +78,12 @@ function Editor() //{{{
let keyword = "[^" + nonkw + "]"; let keyword = "[^" + nonkw + "]";
let nonkeyword = "[" + nonkw + "]"; let nonkeyword = "[" + nonkw + "]";
let full_id = keyword + "+"; let fullId = keyword + "+";
let end_id = nonkeyword + "+" + keyword; let endId = nonkeyword + "+" + keyword;
let non_id = "\\S*" + nonkeyword; let nonId = "\\S*" + nonkeyword;
// Used in addAbbrevation and expandAbbreviation // Used in addAbbrevation and expandAbbreviation
var abbrevmatch = full_id + "|" + end_id + "|" + non_id; var abbrevmatch = fullId + "|" + endId + "|" + nonId;
function getEditor() liberator.focus; function getEditor() liberator.focus;

View File

@@ -122,55 +122,58 @@ function AutoCommands() //{{{
options: [[["-javascript", "-js"], commands.OPTION_NOARG]] options: [[["-javascript", "-js"], commands.OPTION_NOARG]]
}); });
// TODO: expand target to all buffers [
commands.add(["doauto[all]"],
"Apply the autocommands matching the specified URL pattern to all buffers",
function (args)
{ {
commands.get("doautocmd").action.call(this, args); name: "do[autocmd]",
description: "Apply the autocommands matching the specified URL pattern to the current buffer"
}, },
{ {
completer: function (context) completion.autocmdEvent(context), name: "doautoa[ll]",
literal: 0 description: "Apply the autocommands matching the specified URL pattern to all buffers"
} }
); ].forEach(function (command) {
commands.add([command.name],
// TODO: restrict target to current buffer command.description,
commands.add(["do[autocmd]"], // TODO: Perhaps this should take -args to pass to the command?
"Apply the autocommands matching the specified URL pattern to the current buffer",
function (args) function (args)
{ {
args = args.string; // Vim compatible
if (/^\s*$/.test(args)) if (args.length == 0)
{ return void liberator.echomsg("No matching autocommands");
liberator.echomsg("No matching autocommands");
return;
}
let [, event, url] = args.match(/^(\S+)(?:\s+(\S+))?$/);
url = url || buffer.URL;
let [event, url] = args;
let defaultURL = url || buffer.URL;
let validEvents = config.autocommands.map(function (e) e[0]); let validEvents = config.autocommands.map(function (e) e[0]);
// TODO: add command validators
if (event == "*") if (event == "*")
liberator.echoerr("E217: Can't execute autocommands for ALL events"); return void liberator.echoerr("E217: Can't execute autocommands for ALL events");
else if (validEvents.indexOf(event) == -1) else if (validEvents.indexOf(event) == -1)
liberator.echoerr("E216: No such group or event: " + args); return void liberator.echoerr("E216: No such group or event: " + args);
else else if (!autocommands.get(event).some(function (c) c.pattern.test(defaultURL)))
return void liberator.echomsg("No matching autocommands");
if (this.name == "doautoall" && liberator.has("tabs"))
{ {
// TODO: perhaps trigger could return the number of autocmds triggered let current = tabs.index();
// TODO: Perhaps this should take -args to pass to the command?
if (!autocommands.get(event).some(function (c) c.pattern.test(url))) for (let i = 0; i < tabs.count; i++)
liberator.echomsg("No matching autocommands"); {
else tabs.select(i);
autocommands.trigger(event, { url: url }); // if no url arg is specified use the current buffer's URL
autocommands.trigger(event, { url: url || buffer.URL });
} }
tabs.select(current);
}
else
autocommands.trigger(event, { url: defaultURL });
}, },
{ {
completer: function (context) completion.autocmdEvent(context), argCount: "*", // FIXME: kludged for proper error message should be "1".
literal: 0 completer: function (context) completion.autocmdEvent(context)
} });
); });
/////////////////////////////////////////////////////////////////////////////}}} /////////////////////////////////////////////////////////////////////////////}}}
////////////////////// COMPLETIONS ///////////////////////////////////////////// ////////////////////// COMPLETIONS /////////////////////////////////////////////
@@ -439,10 +442,6 @@ function Events() //{{{
window.addEventListener("DOMMenuBarInactive", exitMenuMode, true); window.addEventListener("DOMMenuBarInactive", exitMenuMode, true);
window.addEventListener("resize", onResize, true); window.addEventListener("resize", onResize, true);
// window.document.addEventListener("DOMTitleChanged", function (event) {
// liberator.log("titlechanged");
// }, null);
// NOTE: the order of ["Esc", "Escape"] or ["Escape", "Esc"] // NOTE: the order of ["Esc", "Escape"] or ["Escape", "Esc"]
// matters, so use that string as the first item, that you // matters, so use that string as the first item, that you
// want to refer to within liberator's source code for // want to refer to within liberator's source code for

View File

@@ -743,7 +743,7 @@ function IO() //{{{
} }
else else
return []; // XXX: or should it throw an error, probably yes? return []; // XXX: or should it throw an error, probably yes?
// Yes --djk // Yes, though frankly this should be a precondition so... --djk
}, },
/** /**
@@ -1028,13 +1028,15 @@ lookup:
let heredocEnd = null; // the string which ends the heredoc let heredocEnd = null; // the string which ends the heredoc
let lines = str.split(/\r\n|[\r\n]/); let lines = str.split(/\r\n|[\r\n]/);
function execute(args) { command.execute(args, special, count, { setFrom: file }); }
for (let [i, line] in Iterator(lines)) for (let [i, line] in Iterator(lines))
{ {
if (heredocEnd) // we already are in a heredoc if (heredocEnd) // we already are in a heredoc
{ {
if (heredocEnd.test(line)) if (heredocEnd.test(line))
{ {
command.execute(heredoc, special, count); execute(heredoc);
heredoc = ""; heredoc = "";
heredocEnd = null; heredocEnd = null;
} }
@@ -1057,9 +1059,6 @@ lookup:
{ {
let lineNumber = i + 1; let lineNumber = i + 1;
// TODO: messages need to be able to specify
// whether they can be cleared/overwritten or
// should be appended to and the MOW opened
liberator.echoerr("Error detected while processing " + file.path, commandline.FORCE_MULTILINE); liberator.echoerr("Error detected while processing " + file.path, commandline.FORCE_MULTILINE);
commandline.echo("line " + lineNumber + ":", commandline.HL_LINENR, commandline.APPEND_TO_MESSAGES); commandline.echo("line " + lineNumber + ":", commandline.HL_LINENR, commandline.APPEND_TO_MESSAGES);
liberator.echoerr("E492: Not an editor command: " + line); liberator.echoerr("E492: Not an editor command: " + line);
@@ -1079,15 +1078,11 @@ lookup:
heredocEnd = RegExp("^" + matches[2] + "$", "m"); heredocEnd = RegExp("^" + matches[2] + "$", "m");
if (matches[1]) if (matches[1])
heredoc = matches[1] + "\n"; heredoc = matches[1] + "\n";
continue;
} }
else
command.execute(args, special, count);
}
else
{
// execute a normal liberator command
liberator.execute(line, null, true);
} }
execute(args);
} }
} }
} }
@@ -1095,7 +1090,7 @@ lookup:
// if no heredoc-end delimiter is found before EOF then // if no heredoc-end delimiter is found before EOF then
// process the heredoc anyway - Vim compatible ;-) // process the heredoc anyway - Vim compatible ;-)
if (heredocEnd) if (heredocEnd)
command.execute(heredoc, special, count); execute(heredoc);
} }
if (scriptNames.indexOf(file.path) == -1) if (scriptNames.indexOf(file.path) == -1)

View File

@@ -794,6 +794,31 @@ const liberator = (function () //{{{
literal: 0 literal: 0
}); });
commands.add(["verb[ose]"],
"Execute a command with 'verbose' set",
function (args)
{
let vbs = options.get("verbose");
let value = vbs.value;
try
{
vbs.set(args.count > -1 ? args.count : 1);
vbs.setFrom = null;
liberator.execute(args[0], null, true);
}
finally
{
vbs.set(value);
}
},
{
argCount: "+",
completer: function (context) completion.ex(context),
count: true,
literal: 0
});
commands.add(["ve[rsion]"], commands.add(["ve[rsion]"],
"Show version information", "Show version information",
function (args) function (args)
@@ -962,9 +987,9 @@ const liberator = (function () //{{{
/** @property An RC file to use rather than the default. */ /** @property An RC file to use rather than the default. */
rcFile: null, rcFile: null,
/** @property An Ex command to run before any initialization is performed. */ /** @property An Ex command to run before any initialization is performed. */
preCommand: null, preCommands: null,
/** @property An Ex command to run after all initialization has been performed. */ /** @property An Ex command to run after all initialization has been performed. */
postCommand: null postCommands: null
}, },
registerObserver: registerObserver, registerObserver: registerObserver,

View File

@@ -216,6 +216,7 @@ const modes = (function () //{{{
}, },
// TODO: Deprecate this in favor of addMode? --Kris // TODO: Deprecate this in favor of addMode? --Kris
// Ya --djk
setCustomMode: function (modestr, oneventfunc, stopfunc) setCustomMode: function (modestr, oneventfunc, stopfunc)
{ {
// TODO this.plugin[id]... ('id' maybe submode or what..) // TODO this.plugin[id]... ('id' maybe submode or what..)

View File

@@ -111,12 +111,18 @@ function Option(names, description, type, defaultValue, extraInfo) //{{{
* @see #has * @see #has
*/ */
this.checkHas = extraInfo.checkHas || null; this.checkHas = extraInfo.checkHas || null;
/** /**
* @property {boolean} Set to true whenever the option is first set. This * @property {boolean} Set to true whenever the option is first set. This
* is useful to see whether it was changed from its default value * is useful to see whether it was changed from its default value
* interactively or by some RC file. * interactively or by some RC file.
*/ */
this.hasChanged = false; this.hasChanged = false;
/**
* @property {nsIFile} The script in which this option was last set. null
* implies an interactive command.
*/
this.setFrom = null;
// add no{option} variant of boolean {option} to this.names // add no{option} variant of boolean {option} to this.names
if (this.type == "boolean") if (this.type == "boolean")
@@ -572,6 +578,7 @@ function Options() //{{{
} }
if (name == "all" && reset) if (name == "all" && reset)
// TODO: Why? --djk
liberator.echoerr("You can't reset all options, it could make " + config.hostApplication + " unusable."); liberator.echoerr("You can't reset all options, it could make " + config.hostApplication + " unusable.");
else if (name == "all") else if (name == "all")
options.listPrefs(onlyNonDefault, ""); options.listPrefs(onlyNonDefault, "");
@@ -620,8 +627,11 @@ function Options() //{{{
option.reset(); option.reset();
} }
else else
{
option.setFrom = modifiers.setFrom || null;
option.reset(); option.reset();
} }
}
// read access // read access
else if (opt.get) else if (opt.get)
{ {
@@ -630,9 +640,15 @@ function Options() //{{{
else else
{ {
if (option.type == "boolean") if (option.type == "boolean")
liberator.echo((opt.optionValue ? " " : "no") + option.name); var msg = (opt.optionValue ? " " : "no") + option.name;
else else
liberator.echo(" " + option.name + "=" + opt.optionValue); msg = " " + option.name + "=" + opt.optionValue;
if (options["verbose"] > 0 && option.setFrom)
msg += "\n Last set from " + option.setFrom.path;
// FIXME: Message highlight group wrapping messes up the indent up for multi-arg verbose :set queries
liberator.echo(<span highlight="CmdOutput">{msg}</span>);
} }
} }
// write access // write access
@@ -640,6 +656,8 @@ function Options() //{{{
// improved. i.e. Vim's behavior is pretty sloppy to no real benefit // improved. i.e. Vim's behavior is pretty sloppy to no real benefit
else else
{ {
option.setFrom = modifiers.setFrom || null;
if (opt.option.type == "boolean") if (opt.option.type == "boolean")
{ {
if (opt.valueGiven) if (opt.valueGiven)
@@ -832,9 +850,10 @@ function Options() //{{{
commands.add(["setl[ocal]"], commands.add(["setl[ocal]"],
"Set local option", "Set local option",
function (args) function (args, modifiers)
{ {
return setAction(args, { scope: options.OPTION_SCOPE_LOCAL }); modifiers.scope = options.OPTION_SCOPE_LOCAL;
setAction(args, modifiers);
}, },
{ {
bang: true, bang: true,
@@ -849,9 +868,10 @@ function Options() //{{{
commands.add(["setg[lobal]"], commands.add(["setg[lobal]"],
"Set global option", "Set global option",
function (args) function (args, modifiers)
{ {
return setAction(args, { scope: options.OPTION_SCOPE_GLOBAL }); modifiers.scope = options.OPTION_SCOPE_GLOBAL;
setAction(args, modifiers);
}, },
{ {
bang: true, bang: true,
@@ -866,10 +886,7 @@ function Options() //{{{
commands.add(["se[t]"], commands.add(["se[t]"],
"Set an option", "Set an option",
function (args) function (args, modifiers) { setAction(args, modifiers); },
{
return setAction(args);
},
{ {
bang: true, bang: true,
completer: function (context, args) completer: function (context, args)
@@ -891,11 +908,6 @@ function Options() //{{{
"Delete a variable", "Delete a variable",
function (args) function (args)
{ {
//let names = args.split(/ /);
//if (typeof names == "string") names = [names];
//let length = names.length;
//for (let i = 0, name = names[i]; i < length; name = names[++i])
for (let [, name] in args) for (let [, name] in args)
{ {
let reference = liberator.variableReference(name); let reference = liberator.variableReference(name);

View File

@@ -142,7 +142,7 @@ function Highlights(name, store)
let styles = storage.styles; let styles = storage.styles;
const Highlight = Struct("class", "selector", "filter", "default", "value"); const Highlight = Struct("class", "selector", "filter", "default", "value");
Highlight.defaultValue("filter", function () "chrome://liberator/content/buffer.xhtml" + "," + config.styleableChrome); Highlight.defaultValue("filter", function () ["chrome://liberator/content/buffer.xhtml"].concat(config.styleableChrome).join(","));
Highlight.defaultValue("selector", function () self.selector(this.class)); Highlight.defaultValue("selector", function () self.selector(this.class));
Highlight.defaultValue("value", function () this.default); Highlight.defaultValue("value", function () this.default);
Highlight.prototype.toString = function () "Highlight(" + this.class + ")\n\t" + [k + ": " + util.escapeString(v || "undefined") for ([k, v] in this)].join("\n\t"); Highlight.prototype.toString = function () "Highlight(" + this.class + ")\n\t" + [k + ": " + util.escapeString(v || "undefined") for ([k, v] in this)].join("\n\t");

View File

@@ -871,7 +871,7 @@ function CommandLine() //{{{
////////////////////// COMMANDS //////////////////////////////////////////////// ////////////////////// COMMANDS ////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{ /////////////////////////////////////////////////////////////////////////////{{{
var echoCommands = [ [
{ {
name: "ec[ho]", name: "ec[ho]",
description: "Echo the expression", description: "Echo the expression",
@@ -887,9 +887,7 @@ function CommandLine() //{{{
description: "Echo the expression as an informational message", description: "Echo the expression as an informational message",
action: liberator.echomsg action: liberator.echomsg
} }
]; ].forEach(function (command) {
echoCommands.forEach(function (command) {
commands.add([command.name], commands.add([command.name],
command.description, command.description,
function (args) function (args)
@@ -991,8 +989,7 @@ function CommandLine() //{{{
triggerCallback: function (type, mode, data) triggerCallback: function (type, mode, data)
{ {
if (callbacks[type] && callbacks[type][mode]) if (callbacks[type] && callbacks[type][mode])
return callbacks[type][mode].call(this, data); callbacks[type][mode].call(this, data);
return false;
}, },
runSilently: function (func, self) runSilently: function (func, self)
@@ -1017,8 +1014,10 @@ function CommandLine() //{{{
// completion preview. // completion preview.
return commandWidget.inputField.editor.rootElement.firstChild.textContent; return commandWidget.inputField.editor.rootElement.firstChild.textContent;
} }
catch (e) {} catch (e)
{
return commandWidget.value; return commandWidget.value;
}
}, },
set command(cmd) commandWidget.value = cmd, set command(cmd) commandWidget.value = cmd,
@@ -1278,10 +1277,10 @@ function CommandLine() //{{{
if (completions) if (completions)
completions.previewClear(); completions.previewClear();
if (!currentExtendedMode) if (!currentExtendedMode)
return true; return;
// user pressed ENTER to carry out a command // user pressed <Enter> to carry out a command
// user pressing ESCAPE is handled in the global onEscape // user pressing <Esc> is handled in the global onEscape
// FIXME: <Esc> should trigger "cancel" event // FIXME: <Esc> should trigger "cancel" event
if (events.isAcceptKey(key)) if (events.isAcceptKey(key))
{ {
@@ -1289,10 +1288,9 @@ function CommandLine() //{{{
keepCommand = true; keepCommand = true;
currentExtendedMode = null; // Don't let modes.pop trigger "cancel" currentExtendedMode = null; // Don't let modes.pop trigger "cancel"
modes.pop(!this.silent); modes.pop(!this.silent);
commandline.triggerCallback("submit", mode, command);
return commandline.triggerCallback("submit", mode, command);
} }
// user pressed UP or DOWN arrow to cycle history completion // user pressed <Up> or <Down> arrow to cycle history completion
else if (/^(<Up>|<Down>|<S-Up>|<S-Down>|<PageUp>|<PageDown>)$/.test(key)) else if (/^(<Up>|<Down>|<S-Up>|<S-Down>|<PageUp>|<PageDown>)$/.test(key))
{ {
// prevent tab from moving to the next field // prevent tab from moving to the next field
@@ -1303,9 +1301,8 @@ function CommandLine() //{{{
history.select(/Up/.test(key), !/(Page|S-)/.test(key)); history.select(/Up/.test(key), !/(Page|S-)/.test(key));
else else
liberator.beep(); liberator.beep();
return false;
} }
// user pressed TAB to get completions of a command // user pressed <Tab> to get completions of a command
else if (key == "<Tab>" || key == "<S-Tab>") else if (key == "<Tab>" || key == "<S-Tab>")
{ {
// prevent tab from moving to the next field // prevent tab from moving to the next field
@@ -1313,7 +1310,6 @@ function CommandLine() //{{{
event.stopPropagation(); event.stopPropagation();
tabTimer.tell(event); tabTimer.tell(event);
return false;
} }
else if (key == "<BS>") else if (key == "<BS>")
{ {
@@ -1331,7 +1327,7 @@ function CommandLine() //{{{
{ {
//this.resetCompletions(); //this.resetCompletions();
} }
return true; // allow this event to be handled by the host app // allow this event to be handled by the host app
} }
else if (event.type == "keyup") else if (event.type == "keyup")
{ {
@@ -2087,7 +2083,8 @@ function StatusLine() //{{{
var value = aURI.spec; var value = aURI.spec;
// Try to decode as UTF-8 if there's no encoding sequence that we would break. // Try to decode as UTF-8 if there's no encoding sequence that we would break.
if (!/%25(?:3B|2F|3F|3A|40|26|3D|2B|24|2C|23)/i.test(value)) if (!/%25(?:3B|2F|3F|3A|40|26|3D|2B|24|2C|23)/i.test(value))
try { try
{
value = decodeURI(value) value = decodeURI(value)
// 1. decodeURI decodes %25 to %, which creates unintended // 1. decodeURI decodes %25 to %, which creates unintended
// encoding sequences. Re-encode it, unless it's part of // encoding sequences. Re-encode it, unless it's part of
@@ -2098,7 +2095,8 @@ function StatusLine() //{{{
// by the location bar (bug 410726). // by the location bar (bug 410726).
.replace(/%(?!3B|2F|3F|3A|40|26|3D|2B|24|2C|23)|[\r\n\t]/ig, .replace(/%(?!3B|2F|3F|3A|40|26|3D|2B|24|2C|23)|[\r\n\t]/ig,
encodeURIComponent); encodeURIComponent);
} catch (e) {} }
catch (e) {}
// Encode invisible characters (soft hyphen, zero-width space, BOM, // Encode invisible characters (soft hyphen, zero-width space, BOM,
// line and paragraph separator, word joiner, invisible times, // line and paragraph separator, word joiner, invisible times,

View File

@@ -68,7 +68,8 @@ const config = (function () //{{{
// focusContent() focuses this widget // focusContent() focuses this widget
get mainWidget() this.isComposeWindow ? document.getElementById("content-frame") : GetThreadTree(), get mainWidget() this.isComposeWindow ? document.getElementById("content-frame") : GetThreadTree(),
get visualbellWindow() document.getElementById(this.mainWindowId), get visualbellWindow() document.getElementById(this.mainWindowId),
styleableChrome: "chrome://messenger/content/messenger.xul,chrome://messenger/content/messengercompose/messengercompose.xul", styleableChrome: ["chrome://messenger/content/messenger.xul",
"chrome://messenger/content/messengercompose/messengercompose.xul"],
autocommands: [["DOMLoad", "Triggered when a page's DOM content has fully loaded"], autocommands: [["DOMLoad", "Triggered when a page's DOM content has fully loaded"],
["FolderLoad", "Triggered after switching folders in " + host], ["FolderLoad", "Triggered after switching folders in " + host],

View File

@@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: Muttator configuration file " Language: Muttator configuration file
" Maintainer: Doug Kearns <dougkearns@gmail.com> " Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2009 Aug 3 " Last Change: 2009 Aug 27
" TODO: make this muttator specific - shared liberator config? " TODO: make this muttator specific - shared liberator config?
@@ -28,11 +28,10 @@ syn keyword muttatorCommand ab[breviate] ab[clear] addo[ns] addr[essbook] bN[ext
\ h[elp] helpa[ll] ha[rdcopy] hi[ghlight] ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] iu[nmap] iuna[bbrev] javas[cript] \ h[elp] helpa[ll] ha[rdcopy] hi[ghlight] ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] iu[nmap] iuna[bbrev] javas[cript]
\ js let loadplugins lpl m[ail] ma[rk] macros map mapc[lear] marks mes[sages] messc[lear] mkm[uttatorrc] mm[ap] mmapc[lear] \ js let loadplugins lpl m[ail] ma[rk] macros map mapc[lear] marks mes[sages] messc[lear] mkm[uttatorrc] mm[ap] mmapc[lear]
\ mno[remap] move[to] mu[nmap] nm[ap] nmapc[lear] nno[remap] no[remap] norm[al] nu[nmap] optionu[sage] pa[geinfo] pagest[yle] \ mno[remap] move[to] mu[nmap] nm[ap] nmapc[lear] nno[remap] no[remap] norm[al] nu[nmap] optionu[sage] pa[geinfo] pagest[yle]
\ pas pc[lose] pl[ay] pref[erences] prefs pw[d] q[uit] re[load] res[tart] run runt[ime] sav[eas] scrip[tnames] se[t] \ pas pl[ay] pref[erences] prefs pw[d] q[uit] re[load] res[tart] run runt[ime] sav[eas] scrip[tnames] se[t] setg[lobal]
\ setg[lobal] setl[ocal] sil[ent] so[urce] st[op] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabfir[st] \ setl[ocal] sil[ent] so[urce] st[op] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabfir[st] tabl[ast] tabn[ext]
\ tabl[ast] tabn[ext] tabp[revious] tabr[ewind] tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] \ tabp[revious] tabr[ewind] tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious]
\ toolbart[oggle] tp[revious] una[bbreviate] unl[et] unm[ap] ve[rsion] vie[wsource] viu[sage] vm[ap] vmapc[lear] vno[remap] \ una[bbreviate] unl[et] unm[ap] verb[ose] ve[rsion] vie[wsource] viu[sage] vm[ap] vmapc[lear] vno[remap] vu[nmap] w[rite] zo[om]
\ vu[nmap] w[rite] zo[om]
\ contained \ contained
syn match muttatorCommand "!" contained syn match muttatorCommand "!" contained

View File

@@ -19,6 +19,7 @@
(this might change again, as this is REALLY inconsistent, and i don't (this might change again, as this is REALLY inconsistent, and i don't
know if I like copying bugs) know if I like copying bugs)
* add [c]:verbose[c]
* add [c]:window[c] to run a command in a new window * add [c]:window[c] to run a command in a new window
* add ! version of :delbmarks to delete all bookmarks. * add ! version of :delbmarks to delete all bookmarks.
* new "t" option for 'complete' to also switch to open tabs with :open * new "t" option for 'complete' to also switch to open tabs with :open

View File

@@ -47,7 +47,7 @@ const config = { //{{{
}, },
get visualbellWindow() getBrowser().mPanelContainer, get visualbellWindow() getBrowser().mPanelContainer,
styleableChrome: "chrome://browser/content/browser.xul", styleableChrome: ["chrome://browser/content/browser.xul"],
autocommands: [["BookmarkAdd", "Triggered after a page is bookmarked"], autocommands: [["BookmarkAdd", "Triggered after a page is bookmarked"],
["ColorScheme", "Triggered after a color scheme has been loaded"], ["ColorScheme", "Triggered after a color scheme has been loaded"],

View File

@@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: VIMperator configuration file " Language: VIMperator configuration file
" Maintainer: Doug Kearns <dougkearns@gmail.com> " Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2009 Aug 10 " Last Change: 2009 Aug 27
" TODO: make this vimperator specific - shared liberator config? " TODO: make this vimperator specific - shared liberator config?
@@ -28,12 +28,12 @@ syn keyword vimperatorCommand ab[breviate] ab[clear] addo[ns] bN[ext] b[uffer] b
\ frameo[nly] fw h[elp] helpa[ll] ha[rdcopy] hi[ghlight] hist[ory] hs ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] \ frameo[nly] fw h[elp] helpa[ll] ha[rdcopy] hi[ghlight] hist[ory] hs ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap]
\ iu[nmap] iuna[bbrev] javas[cript] js ju[mps] let loadplugins lpl ls ma[rk] macros map mapc[lear] marks mes[sages] \ iu[nmap] iuna[bbrev] javas[cript] js ju[mps] let loadplugins lpl ls ma[rk] macros map mapc[lear] marks mes[sages]
\ messc[lear] mkv[imperatorrc] nm[ap] nmapc[lear] nno[remap] no[remap] noh[lsearch] norm[al] nu[nmap] o[pen] optionu[sage] \ messc[lear] mkv[imperatorrc] nm[ap] nmapc[lear] nno[remap] no[remap] noh[lsearch] norm[al] nu[nmap] o[pen] optionu[sage]
\ pa[geinfo] pagest[yle] pas pc[lose] pl[ay] pref[erences] prefs pw[d] q[uit] qa[ll] qma[rk] qmarks quita[ll] re[draw] \ pa[geinfo] pagest[yle] pas pl[ay] pref[erences] prefs pw[d] q[uit] qa[ll] qma[rk] qmarks quita[ll] re[draw] re[load]
\ re[load] reloada[ll] res[tart] run runt[ime] sav[eas] sb[ar] sb[open] sbcl[ose] scrip[tnames] se[t] setg[lobal] setl[ocal] \ reloada[ll] res[tart] run runt[ime] sav[eas] sb[ar] sb[open] sbcl[ose] scrip[tnames] se[t] setg[lobal] setl[ocal] sideb[ar]
\ sideb[ar] sil[ent] so[urce] st[op] stopa[ll] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabde[tach] \ sil[ent] so[urce] st[op] stopa[ll] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabde[tach] tabdu[plicate]
\ tabdu[plicate] tabe[dit] tabfir[st] tabl[ast] tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs \ tabe[dit] tabfir[st] tabl[ast] tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how]
\ tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] \ tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et]
\ undoa[ll] unl[et] unm[ap] ve[rsion] vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vu[nmap] w[rite] wc[lose] win[open] \ unm[ap] verb[ose] ve[rsion] vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vu[nmap] w[rite] wc[lose] win[open]
\ winc[lose] wind[ow] wine[dit] wo[pen] wq wqa[ll] xa[ll] zo[om] \ winc[lose] wind[ow] wine[dit] wo[pen] wq wqa[ll] xa[ll] zo[om]
\ contained \ contained

View File

@@ -91,6 +91,6 @@ Enable _passthrough_ mode on *some* Google sites:
Set the filetype to mail when editing email at Gmail: Set the filetype to mail when editing email at Gmail:
\{nbsp}[c]:autocmd LocationChange .* :set editor=gvim\ -f[c] + \{nbsp}[c]:autocmd LocationChange .* :set editor=gvim\ -f[c] +
\{nbsp}[c]:autocmd LocationChange mail\.google\.com :set editor="gvim -f -c 'set ft=mail'"[c] \{nbsp}[c]:autocmd LocationChange mail\.google\.com :set editor="gvim -f -c $$'set ft=mail'$$"[c]
// vim: set filetype=asciidoc: // vim: set filetype=asciidoc:

View File

@@ -23,7 +23,7 @@ ________________________________________________________________________________
|:pa| |:pageinfo| + |:pa| |:pageinfo| +
||:pa[geinfo]|| ||:pa[geinfo]||
________________________________________________________________________________ ________________________________________________________________________________
Show various page information. See [c]:help 'pageinfo'[c] for available options. Show various page information. See [c]:help $$'pageinfo'$$[c] for available options.
________________________________________________________________________________ ________________________________________________________________________________
@@ -375,4 +375,4 @@ the page's default style sheet is used.
All author styling can be removed by setting the 'usermode' option. All author styling can be removed by setting the 'usermode' option.
________________________________________________________________________________ ________________________________________________________________________________
// vim: set filetype=asciidoc fdm=marker: // vim: set filetype=asciidoc:

View File

@@ -30,8 +30,8 @@ is displayed as:
class="hiddentag">:help</span> <span class="hiddentag">:h</span> <span class="hiddentag">:help</span> <span class="hiddentag">:h</span> <span
class="hiddentag">help</span> class="hiddentag">help</span>
<div class="key">:h[elp] <span class="argument">&#123;subject&#125;</span></div><br /> <span class="key">:h[elp] <span class="argument">&#123;subject&#125;</span></span><br />
<div class="key">&lt;F1&gt;</div></p> <span class="key">&lt;F1&gt;</span></p>
<div class="quoteblock"> <div class="quoteblock">
<div class="quoteblock-content"> <div class="quoteblock-content">
<p>Open help window. <p>Open help window.

View File

@@ -268,6 +268,7 @@ section::Ex{nbsp}commands[ex-cmd-index,:index]
||[c]:undoall[c]|| Undo closing of all closed tabs + ||[c]:undoall[c]|| Undo closing of all closed tabs +
||[c]:unlet[c]|| Delete a variable + ||[c]:unlet[c]|| Delete a variable +
||[c]:unmap[c]|| Remove a mapping + ||[c]:unmap[c]|| Remove a mapping +
||[c]:verbose[c]|| Execute a command with 'verbose' set +
||[c]:version[c]|| Show version information + ||[c]:version[c]|| Show version information +
||[c]:viewsource[c]|| View source code of current document + ||[c]:viewsource[c]|| View source code of current document +
||[c]:viusage[c]|| List all mappings with a short description + ||[c]:viusage[c]|| List all mappings with a short description +

View File

@@ -1,10 +1,12 @@
logo:[] logo:[]
+++<div style="text-align: center;">+++ ++++++
*First there was a Navigator, then there was an Explorer. <p style="text-align: center; font-weight: bold;">
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 Later it was time for a Konqueror. Now it's time for an Imperator, the
VIMperator :)* VIMperator :)
+++</div>+++ </p>
++++++
heading::Introduction[intro] heading::Introduction[intro]

View File

@@ -129,7 +129,8 @@ Below is an overview of which modes each map command applies to:
:imap :inoremap :iunmap :imapclear - Insert mode :imap :inoremap :iunmap :imapclear - Insert mode
:cmap :cnoremap :cunmap :cmapclear - Command-line mode :cmap :cnoremap :cunmap :cmapclear - Command-line mode
subsection::Key{nbsp}sequences[:&lt;>,key-sequence] // |<>| breaks doc validation
subsection::Key{nbsp}sequences[key-notation,key-sequence]
For most keys, the key-sequence is the same as the character you see when you For most keys, the key-sequence is the same as the character you see when you
type that key, however there are some exceptions which allow for a much larger type that key, however there are some exceptions which allow for a much larger

View File

@@ -550,7 +550,7 @@ ____
|\'nomore'| |\'more'| |\'nomore'| |\'more'|
||'more'|| boolean (default: on) ||'more'|| boolean (default: on)
____ ____
Pause the message list window when more than one screen of listings is displayed Pause the message list window when more than one screen of listings is displayed.
____ ____

View File

@@ -2,10 +2,12 @@
heading::Quick-start{nbsp}tutorial[tutorial] heading::Quick-start{nbsp}tutorial[tutorial]
+++<div style="text-align: center;">+++ ++++++
*This is a quickstart tutorial to help get new users up and running in <p style="text-align: center; font-weight: bold;">
Vimperator. It is not intended as a full reference explaining all features.* This is a quickstart tutorial to help get new users up and running in
+++</div>+++ Vimperator. It is not intended as a full reference explaining all features.
</p>
++++++
If you've started using Vimperator from scratch (i.e., without any If you've started using Vimperator from scratch (i.e., without any
customization), you should be looking at this help page in a relatively customization), you should be looking at this help page in a relatively

View File

@@ -15,6 +15,7 @@ ________________________________________________________________________________
Redraws the screen. Useful to update the screen halfway executing a script or function. Redraws the screen. Useful to update the screen halfway executing a script or function.
________________________________________________________________________________ ________________________________________________________________________________
|:norm| |:normal| |:norm| |:normal|
||:norm[al][!] {commands}|| + ||:norm[al][!] {commands}|| +
________________________________________________________________________________ ________________________________________________________________________________
@@ -55,6 +56,14 @@ history.
________________________________________________________________________________ ________________________________________________________________________________
|:verb| |:verbose +
||:[count]verb[ose] {command}||
________________________________________________________________________________
Execute a command with 'verbose' set to [count]. If [count] is not specified
then 1 is used as the value.
________________________________________________________________________________
|:ve| |:version| + |:ve| |:version| +
||:ve[rsion][!]|| ||:ve[rsion][!]||
________________________________________________________________________________ ________________________________________________________________________________

View File

@@ -304,7 +304,7 @@ td span.tag {
padding-top: 25px !important; padding-top: 25px !important;
} }
div.key { span.key {
color: rgb(255, 0, 255); /* magenta */ color: rgb(255, 0, 255); /* magenta */
min-width: 120px; /* with 20px padding actually 140px */ min-width: 120px; /* with 20px padding actually 140px */
/*padding-bottom: 5px;*/ /*padding-bottom: 5px;*/

View File

@@ -51,7 +51,7 @@ const config = { //{{{
// focusContent() focuses this widget gSongbirdWindowController takes care of the focus. // focusContent() focuses this widget gSongbirdWindowController takes care of the focus.
get visualbellWindow() document.getElementById(this.mainWindowId), get visualbellWindow() document.getElementById(this.mainWindowId),
styleableChrome: "chrome://gonzo/content/xul/mainplayer.xul", styleableChrome: ["chrome://gonzo/content/xul/mainplayer.xul"],
autocommands: [["BookmarkAdd", "Triggered after a page is bookmarked"], autocommands: [["BookmarkAdd", "Triggered after a page is bookmarked"],
["ColorScheme", "Triggered after a color scheme has been loaded"], ["ColorScheme", "Triggered after a color scheme has been loaded"],

View File

@@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: Xulmus configuration file " Language: Xulmus configuration file
" Maintainer: Doug Kearns <dougkearns@gmail.com> " Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2009 Aug 3 " Last Change: 2009 Aug 27
" TODO: make this xulmus specific - shared liberator config? " TODO: make this xulmus specific - shared liberator config?
@@ -29,14 +29,14 @@ syn keyword xulmusCommand ab[breviate] ab[clear] addo[ns] bN[ext] b[uffer] ba[ck
\ hist[ory] hs ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] iu[nmap] iuna[bbrev] javas[cript] js ju[mps] let load \ hist[ory] hs ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] iu[nmap] iuna[bbrev] javas[cript] js ju[mps] let load
\ loadplugins lpl ls ma[rk] macros map mapc[lear] marks mediav[iew] mes[sages] messc[lear] mkv[imperatorrc] mkx[ulmusrc] \ loadplugins lpl ls ma[rk] macros map mapc[lear] marks mediav[iew] mes[sages] messc[lear] mkv[imperatorrc] mkx[ulmusrc]
\ nm[ap] nmap[clear] nno[remap] no[remap] noh[lsearch] norm[al] nu[nmap] o[pen] optionu[sage] pa[geinfo] pagest[yle] pas \ nm[ap] nmap[clear] nno[remap] no[remap] noh[lsearch] norm[al] nu[nmap] o[pen] optionu[sage] pa[geinfo] pagest[yle] pas
\ pc[lose] pl[ay] playern[ext] playerp[lay] playerpa[use] playerpr[ev] players[top] pm[ap] pmap[clear] pno[remap] \ pl[ay] playern[ext] playerp[lay] playerpa[use] playerpr[ev] players[top] pm[ap] pmap[clear] pno[remap] pref[erences] prefs
\ pref[erences] prefs pu[nmap] pw[d] q[uit] qa[ll] qma[rk] qmarks queue quita[ll] re[draw] re[load] reloada[ll] res[tart] run \ pu[nmap] pw[d] q[uit] qa[ll] qma[rk] qmarks queue quita[ll] re[draw] re[load] reloada[ll] res[tart] run runt[ime] sav[eas]
\ runt[ime] sav[eas] sb[ar] sb[open] sbcl[ose] scrip[tnames] se[t] see[k] setg[lobal] setl[ocal] sideb[ar] sil[ent] sort[view] \ sb[ar] sb[open] sbcl[ose] scrip[tnames] se[t] see[k] setg[lobal] setl[ocal] sideb[ar] sil[ent] sort[view] so[urce] st[op]
\ so[urce] st[op] stopa[ll] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabde[tach] tabdu[plicate] tabe[dit] \ stopa[ll] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabde[tach] tabdu[plicate] tabe[dit] tabfir[st] tabl[ast]
\ tabfir[st] tabl[ast] tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how] \ tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how] tbt[oggle] time tn[ext]
\ tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et] \ toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et] unm[ap] verb[ose] ve[rsion]
\ unm[ap] ve[rsion] vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vol[ume] vu[nmap] w[rite] wc[lose] win[open] \ vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vol[ume] vu[nmap] w[rite] wc[lose] win[open] winc[lose] wine[dit]
\ winc[lose] wine[dit] wo[pen] wq wqa[ll] xa[ll] zo[om] \ wo[pen] wq wqa[ll] xa[ll] zo[om]
\ contained \ contained
syn match xulmusCommand "!" contained syn match xulmusCommand "!" contained

View File

@@ -100,6 +100,6 @@ Enable _passthrough_ mode on *some* Google sites:
Set the filetype to mail when editing email at Gmail: Set the filetype to mail when editing email at Gmail:
\{nbsp}[c]:autocmd LocationChange .* :set editor=gvim\ -f[c] + \{nbsp}[c]:autocmd LocationChange .* :set editor=gvim\ -f[c] +
\{nbsp}[c]:autocmd LocationChange mail\.google\.com :set editor="gvim -f -c 'set ft=mail'"[c] \{nbsp}[c]:autocmd LocationChange mail\.google\.com :set editor="gvim -f -c $$'set ft=mail'$$"[c]
// vim: set filetype=asciidoc: // vim: set filetype=asciidoc:

View File

@@ -23,7 +23,7 @@ ________________________________________________________________________________
|:pa| |:pageinfo| + |:pa| |:pageinfo| +
||:pa[geinfo]|| ||:pa[geinfo]||
________________________________________________________________________________ ________________________________________________________________________________
Show various page information. See [c]:help 'pageinfo'[c] for available options. Show various page information. See [c]:help $$'pageinfo'$$[c] for available options.
________________________________________________________________________________ ________________________________________________________________________________
@@ -375,4 +375,4 @@ the page's default style sheet is used.
All author styling can be removed by setting the 'usermode' option. All author styling can be removed by setting the 'usermode' option.
________________________________________________________________________________ ________________________________________________________________________________
// vim: set filetype=asciidoc fdm=marker: // vim: set filetype=asciidoc:

View File

@@ -30,8 +30,8 @@ is displayed as:
class="hiddentag">:help</span> <span class="hiddentag">:h</span> <span class="hiddentag">:help</span> <span class="hiddentag">:h</span> <span
class="hiddentag">help</span> class="hiddentag">help</span>
<div class="key">:h[elp] <span class="argument">&#123;subject&#125;</span></div><br /> <span class="key">:h[elp] <span class="argument">&#123;subject&#125;</span></span><br />
<div class="key">&lt;F1&gt;</div></p> <span class="key">&lt;F1&gt;</span></p>
<div class="quoteblock"> <div class="quoteblock">
<div class="quoteblock-content"> <div class="quoteblock-content">
<p>Open help window. <p>Open help window.

View File

@@ -314,6 +314,7 @@ section::Ex{nbsp}commands[ex-cmd-index,:index]
||[c]:undoall[c]|| Undo closing of all closed tabs + ||[c]:undoall[c]|| Undo closing of all closed tabs +
||[c]:unlet[c]|| Delete a variable + ||[c]:unlet[c]|| Delete a variable +
||[c]:unmap[c]|| Remove a mapping + ||[c]:unmap[c]|| Remove a mapping +
||[c]:verbose[c]|| Execute a command with 'verbose' set +
||[c]:version[c]|| Show version information + ||[c]:version[c]|| Show version information +
||[c]:viewsource[c]|| View source code of current document + ||[c]:viewsource[c]|| View source code of current document +
||[c]:viusage[c]|| List all mappings with a short description + ||[c]:viusage[c]|| List all mappings with a short description +

View File

@@ -1,4 +1,4 @@
LOGO logo:[]
section::Introduction[intro] section::Introduction[intro]

View File

@@ -141,7 +141,8 @@ Below is an overview of which modes each map command applies to:
:imap :inoremap :iunmap :imapclear - Insert mode :imap :inoremap :iunmap :imapclear - Insert mode
:cmap :cnoremap :cunmap :cmapclear - Command-line mode :cmap :cnoremap :cunmap :cmapclear - Command-line mode
subsection::Key{nbsp}sequences[:&lt;>,key-sequence] // |<>| breaks doc validation
subsection::Key{nbsp}sequences[key-notation,key-sequence]
For most keys, the key-sequence is the same as the character you see when you For most keys, the key-sequence is the same as the character you see when you
type that key, however there are some exceptions which allow for a much larger type that key, however there are some exceptions which allow for a much larger

View File

@@ -537,7 +537,7 @@ ____
|\'nomore'| |\'more'| |\'nomore'| |\'more'|
||'more'|| boolean (default: on) ||'more'|| boolean (default: on)
____ ____
Pause the message list window when more than one screen of listings is displayed Pause the message list window when more than one screen of listings is displayed.
____ ____

View File

@@ -1,251 +0,0 @@
// Initial revision: Sun Jun 8 10:07:05 UTC 2008 (penryu)
heading::Quick-start{nbsp}tutorial[tutorial]
+++<div style="text-align: center;">+++
*This is a quickstart tutorial to help get new users up and running in
Vimperator. It is not intended as a full reference explaining all features.*
+++</div>+++
If you've started using Vimperator from scratch (i.e., without any
customization), you should be looking at this help page in a relatively
bare-looking window. The menubar, navigation bar, and bookmark bars are hidden.
In case you missed the notice in the help:Introduction[intro.html], you can
regain these by issuing the command
\{nbsp}[c]:set go+=mTB<CR>[c]
where [m]<CR>[m] represents pressing the <Enter> or <Return> key.
If you're a veteran Vim user, this may look familiar. It should.
However, in this author's opinion, the best way to get familiar with
Vimperator is to leave these disabled for now. (The above action can be
reversed with [c]:set go=<CR>[c]) You can look at the entry for 'guioptions' in
help:options[options.html] for more information on this.
section::Vimperator's{nbsp}modal{nbsp}interface[modal]
Vimperator's power, like Vim's, comes from it's modal interface. Keys have
different meanings depending on which mode the browser is in. Vimperator has
several modes, but the 2 most important are ``Normal'' mode and
``Command-line'' mode.
When Vimperator starts, it is in Normal mode by default. This is probably where
you will spend the majority of your time.
The other core mode of Vimperator, Command-line mode, can be entered from
Normal mode by typing a \'[m]:[m]' (colon). You will frequently see Vimperator
commands start with a \'[m]:[m]', indicating that what follows is a command.
To return to Normal mode from Command-line mode, type [m]<Esc>[m]. Pressing
[m]<Esc>[m] will also return you to Normal mode from most other modes in
Vimperator.
section::Getting{nbsp}help[getting-help]
Vim is a great editor but it's not much of a web browser. So even seasoned Vim
users will probably have to look at Vimperator documentation sooner or later.
Most of the documentation for Vimperator's features are easily found using the
[c]:help[c] command. For example, you can find help on the [c]:help[c] command
by typing
\{nbsp}[c]:help :help<CR>[c]
Similarly, help on configurable options is available with [c]:help
'{option_name}'[c]. (Note the single quotes around the option name as in Vim.)
Information on all available options is, predictably, [c]:help options[c].
And you can find out about the [m]gt[m] and [m]gT[m] mapping with
\{nbsp}[c]:help gt<CR>[c] +
\{nbsp}[c]:help gT<CR>[c]
Finally, in addition to the help system itself, [c]:exusage[c], [c]:viusage[c]
and [c]:optionusage[c] are useful quick-reference commands.
section::Mouseless[living-mouseless]
*-- or how I learned to stop worrying and love the 80+ buttons I already have.*
The efficiency of Vimperator, as with the legendary editor it was inspired by,
relies on the user being able to keep his fingers on the keyboard where they
can do the most good. While there are some areas where the mouse is clearly
superior at, such as GUI design or some games, Vimperator acts on the
assumption that a web browser doesn't have to be one of those.
Here are some areas where the mouse is typically considered indisposable, and
how Vimperator challenges this preconception.
section::Scrolling[keyboard-scrolling]
Scrolling the browser window is done with simple keystrokes:
* [m]j[m]/[m]k[m] --
scroll window down/up by one line, respectively
* [m]h[m]/[m]l[m] --
scroll window left/right
* [m]<Space>[m]/[m]<C-b>[m] --
scroll down/up by one page
* [m]<C-d>[m]/[m]<C-u>[m] --
scroll down/up by 1/2 page
Your standard buttons ([m]<Up>[m]/[m]<Down>[m]/[m]<PgUp>[m]/[m]<PgDn>[m]) will
also work as expected.
section::History{nbsp}and{nbsp}tabs[history-navigation,tab-navigation]
History navigation (e.g., ``Back'', ``Forward'') are done similarly to
scrolling.
* [m]<C-o>[m]/[m]<C-i>[m] --
move Back/Forward in the current window/tab's history, respectively
Move between tabs using these keystrokes which may also be familiar to tabbing
Vimmers.
* [m]gt[m]/[m]<C-n>[m] --
go to the next tab
* [m]gT[m]/[m]<C-p>[m] --
go to the previous tab
* [m]g0[m]/[m]g$[m] --
go to the first/last tab
* [m]d[m] --
close the active tab (delete the buffer)
To open a web page in a new tab, use the [c]:tabopen {url}[c]. To open a URL in
the current tab, use [c]:open[c]. The Normal mode mappings [m]t[m] and [m]o[m],
respectively, map to these commands, so the following pairs of sequences are
equivalent:
\{nbsp}[c]:open my.webmail.com<CR>[c] +
\{nbsp}[m]omy.webmail.com<CR>[m]
\{nbsp}[c]:tabopen vimperator.org<CR>[c] +
\{nbsp}[m]tvimperator.org<CR>[m]
section::Some{nbsp}hints{nbsp}about{nbsp}surfing...[hints-tutorial]
So now you can navigate around in Vimperator. But wait... how do you *open* a
page or tab linked in a web page? How do you ``click'' on all those links
without your tailed friend?
The answer is ``hints''. Activating hints displays a number next to every link
Vimperator can find. To follow the link, simply type the number corresponding
to the hint, a white number inside a red square by default.
For text links, there's an additional shortcut; you can type some text
contained in the link and Vimperator will search all the links it can find and
only hint the matching links, further narrowing down the list. If the text you
type uniquely identifies any given link, Vimperator will follow that link
immediately without any further user input.
Whichever way you choose to indicate your target link, once Vimperator has
highlighted the link you want, simply hit [m]<Enter>[m] to open it.
The most common hint mode is called help:QuickHint{nbsp}mode[various.html,f].
To activate QuickHint mode, press either [m]f[m] or [m]F[m]. The lower-case
[m]f[m] will open the resulting link in the current tab, while the upper-case
[m]F[m] will open it in a new tab.
To test it, try this link: http://vimperator.org/[Vimperator Homepage].
Activate QuickHint mode with [m]f[m] or [m]F[m] to highlight all currently
visible links. Then start typing the text of the link. The link should be
uniquely identified soon, and Vimperator will open it. Once you're done,
remember to use [m]<C-o>[m] (``History Back'') or [m]d[m] (``Delete Buffer'')
to return here, depending on which key you used to activate QuickHint mode.
section::Common{nbsp}issues[common-issues]
Say you get half-way done typing in a new URL, only to remember that you've
already got that page open in the previous tab. Your command line might look
something like this:
\{nbsp}[c]:open my.partial.url/fooba[c]
You can exit the command line and access the already loaded page with the
following:
\{nbsp}[m]<Esc>gT[m]
section::Saving{nbsp}for{nbsp}posterity{nbsp}-{nbsp}vimperatorrc[vimperatorrc]
Once you get Vimperator set up with your desired options, maps, and commands,
you'll probably want them to be available the next time you open Vimperator.
Continuing the Vim theme, this is done with a vimperatorrc file.
To save your current settings and allow them to be loaded automatically
next time you start Vimperator, issue the [c]:mkv[c] command.
This will create the file *_$HOME_/.vimperatorrc* containing your settings.
It is a simple text file, just like a vimrc file and can be easily
edited to suit your preferences.
section::Find{nbsp}the{nbsp}exit{nbsp}nearest{nbsp}you[quitting-without-menus]
Vimperator supports all of Vim's classic methods of exiting.
* [c]:xall[c] -- command to quit and save the current browsing
session for next time; the default.
* [c]:qall[c] -- command to quit _without_ saving the session
* [m]ZZ[m] -- Normal mode mapping equivalent to [c]:xall[c]
* [m]ZQ[m] -- Normal mode mapping equivalent to [c]:qall[c]
section::Where{nbsp}did{nbsp}Firefox{nbsp}go?[whither-firefox]
You might feel pretty disoriented now. Don't worry. This is still Firefox
underneath. Here are some ways Vimperator allows Firefox to shine through. See
the [c]:help[c] for these commands and mappings for more information on how to
make the best use of them.
* [c]:dialog[c] --
To access some of Firefox's many dialog windows, you can use the
[c]:dialog[c] command. See [c]:help :dialog[c].
* [c]:bmarks[c] --
Vimperator provides a new interface to bookmarks, but they're still your
standard Firefox bookmarks under the hood. [c]:bmark[c] will add a new
bookmark, while [c]:bmarks[c] will list the bookmarks currently defined.
* [c]:history[c] --
It's exactly what it sounds like. This command will display a colorized,
scrollable and clickable list of the locations in Vimperator's history.
* [c]:emenu[c] --
Access the Firefox menus through the Vimperator command line.
Feel free to explore at this point. If you use the [c]:tabopen[c] command,
remember to use the [m]gt[m]/[m]gT[m] mappings to get back to this page. If
using the [c]:open[c] command, use the history keys (e.g., [m]H[m]) to return.
If you get hopelessly lost, just type [c]:help<CR>[c] and click the
``Tutorial'' link to return.
// TODO: other sections?
section::Get{nbsp}me{nbsp}out{nbsp}of{nbsp}here![removal]
If you've given it a fair shot and determined ... TODO
The Vimperator way to do this is with the command [c]:addons[c]. Issuing this
command brings up the Firefox Add-ons dialog window; you can then remove it as
normal, selecting Vimperator from the list and clicking (yes, clicking)
*Uninstall*.
Alternatively, you can do this the old-fashioned way: re-enable the menubar,
as above, with [c]:set go+=m[c], and select *Add-ons* from the *Tools* menu.
section::I'm{nbsp}interested...but{nbsp}lost![support]
Vimperator has an energetic and growing user base. If you've run into a problem
that you can't seem to solve with Vimperator, or if you think you might have
found a bug, please let us know! There is support available on the
http://vimperator.cutup.org/index.php?title=Main_Page[wiki], or in the
#vimperator IRC channel on http://freenode.net/[freenode].
If you have any feature requests or (even better) offers to help, we'd love to
hear from you as well. Developers work on Vimperator whenever possible, but we
are neither infinite nor omnipotent; please bear with us. If you can't wait for
us to get around to it, rest assured patches are welcome! See the
help:Developer[developer.html] page for more information.
// vim: set filetype=asciidoc:

View File

@@ -55,6 +55,14 @@ history.
________________________________________________________________________________ ________________________________________________________________________________
|:verb| |:verbose +
||:[count]verb[ose] {command}||
________________________________________________________________________________
Execute a command with 'verbose' set to [count]. If [count] is not specified
then 1 is used as the value.
________________________________________________________________________________
|:ve| |:version| + |:ve| |:version| +
||:ve[rsion][!]|| ||:ve[rsion][!]||
________________________________________________________________________________ ________________________________________________________________________________

View File

@@ -304,7 +304,7 @@ td span.tag {
padding-top: 25px !important; padding-top: 25px !important;
} }
div.key { span.key {
color: rgb(255, 0, 255); /* magenta */ color: rgb(255, 0, 255); /* magenta */
min-width: 120px; /* with 20px padding actually 140px */ min-width: 120px; /* with 20px padding actually 140px */
/*padding-bottom: 5px;*/ /*padding-bottom: 5px;*/