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:
@@ -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
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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..)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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],
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"],
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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">{subject}</span></div><br />
|
<span class="key">:h[elp] <span class="argument">{subject}</span></span><br />
|
||||||
<div class="key"><F1></div></p>
|
<span class="key"><F1></span></p>
|
||||||
<div class="quoteblock">
|
<div class="quoteblock">
|
||||||
<div class="quoteblock-content">
|
<div class="quoteblock-content">
|
||||||
<p>Open help window.
|
<p>Open help window.
|
||||||
|
|||||||
@@ -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 +
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|
||||||
|
|||||||
@@ -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[:<>,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
|
||||||
|
|||||||
@@ -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.
|
||||||
____
|
____
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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][!]||
|
||||||
________________________________________________________________________________
|
________________________________________________________________________________
|
||||||
|
|||||||
@@ -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;*/
|
||||||
|
|||||||
@@ -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"],
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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">{subject}</span></div><br />
|
<span class="key">:h[elp] <span class="argument">{subject}</span></span><br />
|
||||||
<div class="key"><F1></div></p>
|
<span class="key"><F1></span></p>
|
||||||
<div class="quoteblock">
|
<div class="quoteblock">
|
||||||
<div class="quoteblock-content">
|
<div class="quoteblock-content">
|
||||||
<p>Open help window.
|
<p>Open help window.
|
||||||
|
|||||||
@@ -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 +
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
LOGO
|
logo:[]
|
||||||
|
|
||||||
section::Introduction[intro]
|
section::Introduction[intro]
|
||||||
|
|
||||||
|
|||||||
@@ -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[:<>,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
|
||||||
|
|||||||
@@ -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.
|
||||||
____
|
____
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
|
||||||
@@ -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][!]||
|
||||||
________________________________________________________________________________
|
________________________________________________________________________________
|
||||||
|
|||||||
@@ -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;*/
|
||||||
|
|||||||
Reference in New Issue
Block a user