mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-01-07 20:54:11 +01:00
Merge branch 'master' of kmaglione@git.vimperator.org:/git/vimperator/liberator
This commit is contained in:
@@ -2,17 +2,17 @@
|
||||
|
||||
#### configuration
|
||||
|
||||
ASCIIDOC = asciidoc
|
||||
AWK = awk
|
||||
ASCIIDOC = asciidoc
|
||||
AWK = awk
|
||||
|
||||
LOCALE = $(shell basename `pwd`)
|
||||
DOCLANG = $(shell basename `pwd` | $(AWK) -F- '{ print ($$1 ~ /^[a-z][a-z]$$/) ? $$1 : "en" }')
|
||||
LOCALE = $(shell basename `pwd`)
|
||||
DOCLANG = $(shell basename `pwd` | $(AWK) -F- '{ print ($$1 ~ /^[a-z][a-z]$$/) ? $$1 : "en" }')
|
||||
|
||||
SRC_FILES = $(wildcard *.txt)
|
||||
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
|
||||
|
||||
.SILENT:
|
||||
|
||||
@@ -50,7 +50,9 @@ check-asciidoc:
|
||||
@$(ASCIIDOC) --version | $(AWK) '{ exit $$2 !~ /^8\.4\./ }' || \
|
||||
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)/$@"
|
||||
# NOTE: asciidoc doesn't source the conf file implicitly when processing stdin
|
||||
sed -e '1i\
|
||||
@@ -60,7 +62,7 @@ heading:Version{nbsp}information[version-information]' \
|
||||
/' ../../NEWS | \
|
||||
${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)/$@"
|
||||
$(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
@@ -92,9 +92,9 @@ function Bookmarks() //{{{
|
||||
this.__defineGetter__("bookmarks", function () this.load());
|
||||
|
||||
this.__defineGetter__("keywords",
|
||||
function () [new Keyword(k.keyword, k.title, k.icon, k.url) for ([,k] in Iterator(self.bookmarks)) if (k.keyword)]);
|
||||
function () [new Keyword(k.keyword, k.title, k.icon, k.url) for ([, k] in Iterator(self.bookmarks)) if (k.keyword)]);
|
||||
|
||||
this.__iterator__ = function () (val for ([,val] in Iterator(self.bookmarks)));
|
||||
this.__iterator__ = function () (val for ([, val] in Iterator(self.bookmarks)));
|
||||
|
||||
function loadBookmark(node)
|
||||
{
|
||||
@@ -502,7 +502,7 @@ function Bookmarks() //{{{
|
||||
let engine = services.get("browserSearch").getEngineByAlias(name);
|
||||
if (!engine)
|
||||
return;
|
||||
let [,word] = /^\s*(\S+)/.exec(context.filter) || [];
|
||||
let [, word] = /^\s*(\S+)/.exec(context.filter) || [];
|
||||
if (!kludge && word == name) // FIXME: Check for matching keywords
|
||||
return;
|
||||
let ctxt = context.fork(name, 0);
|
||||
@@ -534,10 +534,6 @@ function Bookmarks() //{{{
|
||||
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
|
||||
get: function get(filter, tags, maxItems, extra)
|
||||
{
|
||||
@@ -654,7 +650,7 @@ function Bookmarks() //{{{
|
||||
getSearchEngines: function getSearchEngines()
|
||||
{
|
||||
let searchEngines = [];
|
||||
for (let [,engine] in Iterator(services.get("browserSearch").getVisibleEngines({})))
|
||||
for (let [, engine] in Iterator(services.get("browserSearch").getVisibleEngines({})))
|
||||
{
|
||||
let alias = engine.alias;
|
||||
if (!alias || !/^[a-z0-9_-]+$/.test(alias))
|
||||
@@ -1211,7 +1207,7 @@ function QuickMarks() //{{{
|
||||
{
|
||||
let pattern = RegExp("[" + filter.replace(/\s+/g, "") + "]");
|
||||
|
||||
for (let [qmark,] in qmarks)
|
||||
for (let [qmark, ] in qmarks)
|
||||
{
|
||||
if (pattern.test(qmark))
|
||||
qmarks.remove(qmark);
|
||||
|
||||
@@ -774,7 +774,7 @@ function Buffer() //{{{
|
||||
|
||||
// put feeds rss into pageFeeds[]
|
||||
let nFeed = 0;
|
||||
for (let [,link] in Iterator(doc.getElementsByTagName("link")))
|
||||
for (let [, link] in Iterator(doc.getElementsByTagName("link")))
|
||||
{
|
||||
if (!link.href)
|
||||
return;
|
||||
@@ -1167,7 +1167,7 @@ function Buffer() //{{{
|
||||
|
||||
// TODO: this should probably use the default 'hinttags' value. --djk
|
||||
let res = buffer.evaluateXPath(options["hinttags"], frame.document);
|
||||
for (let [,regex] in Iterator(regexes))
|
||||
for (let [, regex] in Iterator(regexes))
|
||||
{
|
||||
for (let i in util.range(res.snapshotLength, 0, -1))
|
||||
{
|
||||
@@ -1667,7 +1667,7 @@ function Marks() //{{{
|
||||
if (localmark)
|
||||
{
|
||||
let win = window.content;
|
||||
for (let [i,] in Iterator(localmark))
|
||||
for (let [i, ] in Iterator(localmark))
|
||||
{
|
||||
if (localmark[i].location == win.location.href)
|
||||
{
|
||||
@@ -1697,7 +1697,7 @@ function Marks() //{{{
|
||||
function localMarkIter()
|
||||
{
|
||||
for (let [mark, value] in localMarks)
|
||||
for (let [,val] in Iterator(value))
|
||||
for (let [, val] in Iterator(value))
|
||||
yield [mark, val];
|
||||
}
|
||||
|
||||
@@ -1825,7 +1825,7 @@ function Marks() //{{{
|
||||
|
||||
// FIXME: Line/Column doesn't make sense with %
|
||||
context.title = ["Mark", "Line Column File"];
|
||||
context.keys.description = function ([,m]) percent(m.position.y) + "% " + percent(m.position.x) + "% " + m.location;
|
||||
context.keys.description = function ([, m]) percent(m.position.y) + "% " + percent(m.position.x) + "% " + m.location;
|
||||
context.completions = marks.all;
|
||||
};
|
||||
|
||||
@@ -1903,17 +1903,17 @@ function Marks() //{{{
|
||||
if (special)
|
||||
{
|
||||
// :delmarks! only deletes a-z marks
|
||||
for (let [mark,] in localMarks)
|
||||
for (let [mark, ] in localMarks)
|
||||
removeLocalMark(mark);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (let [mark,] in urlMarks)
|
||||
for (let [mark, ] in urlMarks)
|
||||
{
|
||||
if (filter.indexOf(mark) >= 0)
|
||||
removeURLMark(mark);
|
||||
}
|
||||
for (let [mark,] in localMarks)
|
||||
for (let [mark, ] in localMarks)
|
||||
{
|
||||
if (filter.indexOf(mark) >= 0)
|
||||
removeLocalMark(mark);
|
||||
@@ -1965,7 +1965,7 @@ function Marks() //{{{
|
||||
let win = window.content;
|
||||
let slice = localMarks.get(mark) || [];
|
||||
|
||||
for (let [,lmark] in Iterator(slice))
|
||||
for (let [, lmark] in Iterator(slice))
|
||||
{
|
||||
if (win.location.href == lmark.location)
|
||||
{
|
||||
@@ -2006,7 +2006,7 @@ function Marks() //{{{
|
||||
Math.round(mark[1].position.x * 100) + "%",
|
||||
Math.round(mark[1].position.y * 100) + "%",
|
||||
mark[1].location]
|
||||
for ([,mark] in Iterator(marks))));
|
||||
for ([, mark] in Iterator(marks))));
|
||||
commandline.echo(list, commandline.HL_NORMAL, commandline.FORCE_MULTILINE);
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ function Command(specs, description, action, extraInfo) //{{{
|
||||
let longNames = [];
|
||||
let shortNames = [];
|
||||
|
||||
for (let [,spec] in Iterator(specs))
|
||||
for (let [, spec] in Iterator(specs))
|
||||
{
|
||||
let matches = spec.match(/(\w+)\[(\w+)\](\w*)/);
|
||||
|
||||
@@ -204,7 +204,7 @@ Command.prototype = {
|
||||
return;
|
||||
args.count = count;
|
||||
args.bang = bang;
|
||||
self.action.call(self, args, bang, count, modifiers);
|
||||
self.action.call(self, args, modifiers);
|
||||
}
|
||||
|
||||
if (this.hereDoc)
|
||||
@@ -229,7 +229,7 @@ Command.prototype = {
|
||||
*/
|
||||
hasName: function (name)
|
||||
{
|
||||
for (let [,spec] in Iterator(this.specs))
|
||||
for (let [, spec] in Iterator(this.specs))
|
||||
{
|
||||
let fullName = spec.replace(/\[(\w+)]$/, "$1");
|
||||
let index = spec.indexOf("[");
|
||||
@@ -515,7 +515,7 @@ function Commands() //{{{
|
||||
opt += char + quote(val)
|
||||
res.push(opt);
|
||||
}
|
||||
for (let [,arg] in Iterator(args.arguments || []))
|
||||
for (let [, arg] in Iterator(args.arguments || []))
|
||||
res.push(quote(arg));
|
||||
|
||||
let str = args.literalArg;
|
||||
@@ -562,6 +562,9 @@ function Commands() //{{{
|
||||
// : it might be nice to be able to specify that certain quoting
|
||||
// should be disabled E.g. backslash without having to resort to
|
||||
// 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
|
||||
// elsewhere, as type Args rather than simply Object makes sense,
|
||||
// especially since it is further augmented for use in
|
||||
@@ -712,9 +715,9 @@ function Commands() //{{{
|
||||
var optname = "";
|
||||
if (!onlyArgumentsRemaining)
|
||||
{
|
||||
for (let [,opt] in Iterator(options))
|
||||
for (let [, opt] in Iterator(options))
|
||||
{
|
||||
for (let [,optname] in Iterator(opt[0]))
|
||||
for (let [, optname] in Iterator(opt[0]))
|
||||
{
|
||||
if (sub.indexOf(optname) == 0)
|
||||
{
|
||||
@@ -1009,6 +1012,7 @@ function Commands() //{{{
|
||||
}
|
||||
|
||||
// TODO: offer completion.ex?
|
||||
// : make this config specific
|
||||
var completeOptionMap = {
|
||||
abbreviation: "abbreviation", altstyle: "alternateStyleSheet",
|
||||
bookmark: "bookmark", buffer: "buffer", color: "colorScheme",
|
||||
@@ -1058,7 +1062,7 @@ function Commands() //{{{
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// FIXME: should be pushed to the MOW
|
||||
liberator.echo(":" + this.name + " ...");
|
||||
liberator.echoerr("E117: Unknown function: " + completeOpt);
|
||||
liberator.log(e);
|
||||
return undefined;
|
||||
@@ -1107,7 +1111,7 @@ function Commands() //{{{
|
||||
cmd.count ? "0c" : "",
|
||||
completerToString(cmd.completer),
|
||||
cmd.replacementText || "function () { ... }"]
|
||||
for ([,cmd] in Iterator(cmds))));
|
||||
for ([, cmd] in Iterator(cmds))));
|
||||
|
||||
commandline.echo(str, commandline.HL_NORMAL, commandline.FORCE_MULTILINE);
|
||||
}
|
||||
|
||||
@@ -471,13 +471,13 @@ CompletionContext.prototype = {
|
||||
let filter = fixCase(this.filter);
|
||||
if (this.anchored)
|
||||
{
|
||||
function compare (text, s) text.substr(0, s.length) == s;
|
||||
function compare(text, s) text.substr(0, s.length) == s;
|
||||
substrings = util.map(util.range(filter.length, text.length + 1),
|
||||
function (end) text.substring(0, end));
|
||||
}
|
||||
else
|
||||
{
|
||||
function compare (text, s) text.indexOf(s) >= 0;
|
||||
function compare(text, s) text.indexOf(s) >= 0;
|
||||
substrings = [];
|
||||
let start = 0;
|
||||
let idx;
|
||||
@@ -527,7 +527,7 @@ CompletionContext.prototype = {
|
||||
|
||||
cancelAll: function ()
|
||||
{
|
||||
for (let [,context] in Iterator(this.contextList))
|
||||
for (let [, context] in Iterator(this.contextList))
|
||||
{
|
||||
if (context.cancel)
|
||||
context.cancel();
|
||||
@@ -1006,7 +1006,7 @@ function Completion() //{{{
|
||||
// Find any complete statements that we can eval before we eval our object.
|
||||
// This allows for things like: let doc = window.content.document; let elem = doc.createElement...; elem.<Tab>
|
||||
let prev = 0;
|
||||
for (let [,v] in Iterator(get(0)[FULL_STATEMENTS]))
|
||||
for (let [, v] in Iterator(get(0)[FULL_STATEMENTS]))
|
||||
{
|
||||
let key = str.substring(prev, v + 1);
|
||||
if (checkFunction(prev, v, key))
|
||||
@@ -1123,14 +1123,14 @@ function Completion() //{{{
|
||||
}
|
||||
// TODO: Make this a generic completion helper function.
|
||||
let filter = key + (string || "");
|
||||
for (let [,obj] in Iterator(objects))
|
||||
for (let [, obj] in Iterator(objects))
|
||||
{
|
||||
this.context.fork(obj[1], top[OFFSET], this, fill,
|
||||
obj[0], obj[1], compl, compl != orig, filter, last, key.length);
|
||||
}
|
||||
if (orig)
|
||||
return;
|
||||
for (let [,obj] in Iterator(objects))
|
||||
for (let [, obj] in Iterator(objects))
|
||||
{
|
||||
obj[1] += " (substrings)";
|
||||
this.context.fork(obj[1], top[OFFSET], this, fill,
|
||||
@@ -1283,7 +1283,7 @@ function Completion() //{{{
|
||||
setFunctionCompleter: function setFunctionCompleter(funcs, completers)
|
||||
{
|
||||
funcs = Array.concat(funcs);
|
||||
for (let [,func] in Iterator(funcs))
|
||||
for (let [, func] in Iterator(funcs))
|
||||
{
|
||||
func.liberatorCompleter = function liberatorCompleter(context, func, obj, args) {
|
||||
let completer = completers[args.length - 1];
|
||||
|
||||
@@ -78,12 +78,12 @@ function Editor() //{{{
|
||||
let keyword = "[^" + nonkw + "]";
|
||||
let nonkeyword = "[" + nonkw + "]";
|
||||
|
||||
let full_id = keyword + "+";
|
||||
let end_id = nonkeyword + "+" + keyword;
|
||||
let non_id = "\\S*" + nonkeyword;
|
||||
let fullId = keyword + "+";
|
||||
let endId = nonkeyword + "+" + keyword;
|
||||
let nonId = "\\S*" + nonkeyword;
|
||||
|
||||
// Used in addAbbrevation and expandAbbreviation
|
||||
var abbrevmatch = full_id + "|" + end_id + "|" + non_id;
|
||||
var abbrevmatch = fullId + "|" + endId + "|" + nonId;
|
||||
|
||||
function getEditor() liberator.focus;
|
||||
|
||||
@@ -186,7 +186,7 @@ function Editor() //{{{
|
||||
function abbrevs()
|
||||
{
|
||||
for (let [lhs, abbr] in Iterator(abbreviations))
|
||||
for (let [,rhs] in Iterator(abbr))
|
||||
for (let [, rhs] in Iterator(abbr))
|
||||
yield [lhs, rhs];
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ function Editor() //{{{
|
||||
liberator.echoerr("E474: Invalid argument");
|
||||
return false;
|
||||
}
|
||||
let [,lhs,rhs] = matches;
|
||||
let [, lhs, rhs] = matches;
|
||||
if (rhs)
|
||||
editor.addAbbreviation(mode, lhs, rhs);
|
||||
else
|
||||
|
||||
@@ -122,55 +122,58 @@ function AutoCommands() //{{{
|
||||
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),
|
||||
literal: 0
|
||||
name: "doautoa[ll]",
|
||||
description: "Apply the autocommands matching the specified URL pattern to all buffers"
|
||||
}
|
||||
);
|
||||
|
||||
// TODO: restrict target to current buffer
|
||||
commands.add(["do[autocmd]"],
|
||||
"Apply the autocommands matching the specified URL pattern to the current buffer",
|
||||
function (args)
|
||||
{
|
||||
args = args.string;
|
||||
if (/^\s*$/.test(args))
|
||||
].forEach(function (command) {
|
||||
commands.add([command.name],
|
||||
command.description,
|
||||
// TODO: Perhaps this should take -args to pass to the command?
|
||||
function (args)
|
||||
{
|
||||
liberator.echomsg("No matching autocommands");
|
||||
return;
|
||||
}
|
||||
// Vim compatible
|
||||
if (args.length == 0)
|
||||
return void liberator.echomsg("No matching autocommands");
|
||||
|
||||
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 == "*")
|
||||
return void liberator.echoerr("E217: Can't execute autocommands for ALL events");
|
||||
else if (validEvents.indexOf(event) == -1)
|
||||
return void liberator.echoerr("E216: No such group or event: " + args);
|
||||
else if (!autocommands.get(event).some(function (c) c.pattern.test(defaultURL)))
|
||||
return void liberator.echomsg("No matching autocommands");
|
||||
|
||||
if (event == "*")
|
||||
liberator.echoerr("E217: Can't execute autocommands for ALL events");
|
||||
else if (validEvents.indexOf(event) == -1)
|
||||
liberator.echoerr("E216: No such group or event: " + args);
|
||||
else
|
||||
{
|
||||
// TODO: perhaps trigger could return the number of autocmds triggered
|
||||
// TODO: Perhaps this should take -args to pass to the command?
|
||||
if (!autocommands.get(event).some(function (c) c.pattern.test(url)))
|
||||
liberator.echomsg("No matching autocommands");
|
||||
if (this.name == "doautoall" && liberator.has("tabs"))
|
||||
{
|
||||
let current = tabs.index();
|
||||
|
||||
for (let i = 0; i < tabs.count; i++)
|
||||
{
|
||||
tabs.select(i);
|
||||
// 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: url });
|
||||
}
|
||||
},
|
||||
{
|
||||
completer: function (context) completion.autocmdEvent(context),
|
||||
literal: 0
|
||||
}
|
||||
);
|
||||
autocommands.trigger(event, { url: defaultURL });
|
||||
},
|
||||
{
|
||||
argCount: "*", // FIXME: kludged for proper error message should be "1".
|
||||
completer: function (context) completion.autocmdEvent(context)
|
||||
});
|
||||
});
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////}}}
|
||||
////////////////////// COMPLETIONS /////////////////////////////////////////////
|
||||
@@ -306,7 +309,7 @@ function AutoCommands() //{{{
|
||||
let lastPattern = null;
|
||||
let url = args.url || "";
|
||||
|
||||
for (let [,autoCmd] in Iterator(autoCmds))
|
||||
for (let [, autoCmd] in Iterator(autoCmds))
|
||||
{
|
||||
if (autoCmd.pattern.test(url))
|
||||
{
|
||||
@@ -439,10 +442,6 @@ function Events() //{{{
|
||||
window.addEventListener("DOMMenuBarInactive", exitMenuMode, 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"]
|
||||
// matters, so use that string as the first item, that you
|
||||
// want to refer to within liberator's source code for
|
||||
@@ -472,7 +471,7 @@ function Events() //{{{
|
||||
if (k in keyTable)
|
||||
names = keyTable[k];
|
||||
code_key[v] = names[0];
|
||||
for (let [,name] in Iterator(names))
|
||||
for (let [, name] in Iterator(names))
|
||||
key_code[name.toLowerCase()] = v;
|
||||
}
|
||||
|
||||
@@ -581,7 +580,7 @@ function Events() //{{{
|
||||
|
||||
if (dirs.length > 0)
|
||||
{
|
||||
for (let [,dir] in Iterator(dirs))
|
||||
for (let [, dir] in Iterator(dirs))
|
||||
{
|
||||
liberator.echomsg('Searching for "macros/*" in "' + dir.path + '"', 2);
|
||||
|
||||
@@ -846,7 +845,7 @@ function Events() //{{{
|
||||
{
|
||||
let re = RegExp(filter);
|
||||
|
||||
for (let [item,] in macros)
|
||||
for (let [item, ] in macros)
|
||||
{
|
||||
if (re.test(item) || !filter)
|
||||
macros.remove(item);
|
||||
@@ -882,7 +881,7 @@ function Events() //{{{
|
||||
{
|
||||
liberator.threadYield(1, true);
|
||||
|
||||
for (let [,evt_obj] in Iterator(events.fromString(keys)))
|
||||
for (let [, evt_obj] in Iterator(events.fromString(keys)))
|
||||
{
|
||||
let elem = liberator.focus || window.content;
|
||||
let evt = events.create(doc, "keypress", evt_obj);
|
||||
@@ -922,7 +921,7 @@ function Events() //{{{
|
||||
{
|
||||
let duringFeed = this.duringFeed;
|
||||
this.duringFeed = [];
|
||||
for (let [,evt] in Iterator(duringFeed))
|
||||
for (let [, evt] in Iterator(duringFeed))
|
||||
evt.target.dispatchEvent(evt);
|
||||
}
|
||||
}
|
||||
@@ -1021,8 +1020,8 @@ function Events() //{{{
|
||||
while (match = re.exec(input))
|
||||
{
|
||||
let evt_str = match[0];
|
||||
let evt_obj = {ctrlKey:false, shiftKey:false,altKey:false, metaKey: false,
|
||||
keyCode: 0, charCode: 0, type: "keypress"};
|
||||
let evt_obj = { ctrlKey: false, shiftKey: false, altKey: false, metaKey: false,
|
||||
keyCode: 0, charCode: 0, type: "keypress" };
|
||||
|
||||
if (evt_str.length > 1) // <.*?>
|
||||
{
|
||||
|
||||
@@ -66,26 +66,26 @@ function Hints() //{{{
|
||||
function images() "//img | //xhtml:img";
|
||||
|
||||
const hintModes = {
|
||||
";": Mode("Focus hint", function (elem) buffer.focusElement(elem), extended),
|
||||
"?": Mode("Show information for hint", function (elem) buffer.showElementInfo(elem), extended),
|
||||
s: Mode("Save hint", function (elem) buffer.saveLink(elem, true)),
|
||||
a: Mode("Save hint with prompt", function (elem) buffer.saveLink(elem, false)),
|
||||
f: Mode("Focus frame", function (elem) elem.ownerDocument.defaultView.focus(), function () "//body | //xhtml:body"),
|
||||
o: Mode("Follow hint", function (elem) buffer.followLink(elem, liberator.CURRENT_TAB)),
|
||||
t: Mode("Follow hint in a new tab", function (elem) buffer.followLink(elem, liberator.NEW_TAB)),
|
||||
b: Mode("Follow hint in a background tab", function (elem) buffer.followLink(elem, liberator.NEW_BACKGROUND_TAB)),
|
||||
w: Mode("Follow hint in a new window", function (elem) buffer.followLink(elem, liberator.NEW_WINDOW), extended),
|
||||
F: Mode("Open multiple hints in tabs", followAndReshow),
|
||||
O: Mode("Generate an ':open URL' using hint", function (elem, loc) commandline.open(":", "open " + loc, modes.EX)),
|
||||
T: Mode("Generate a ':tabopen URL' using hint",function (elem, loc) commandline.open(":", "tabopen " + loc, modes.EX)),
|
||||
W: Mode("Generate a ':winopen URL' using hint",function (elem, loc) commandline.open(":", "winopen " + loc, modes.EX)),
|
||||
v: Mode("View hint source", function (elem, loc) buffer.viewSource(loc, false), extended),
|
||||
V: Mode("View hint source in external editor", function (elem, loc) buffer.viewSource(loc, true), extended),
|
||||
y: Mode("Yank hint location", function (elem, loc) util.copyToClipboard(loc, true)),
|
||||
Y: Mode("Yank hint description", function (elem) util.copyToClipboard(elem.textContent || "", true), extended),
|
||||
c: Mode("Open context menu", function (elem) buffer.openContextMenu(elem), extended),
|
||||
i: Mode("Show image", function (elem) liberator.open(elem.src), images),
|
||||
I: Mode("Show image in a new tab", function (elem) liberator.open(elem.src, liberator.NEW_TAB), images)
|
||||
";": Mode("Focus hint", function (elem) buffer.focusElement(elem), extended),
|
||||
"?": Mode("Show information for hint", function (elem) buffer.showElementInfo(elem), extended),
|
||||
s: Mode("Save hint", function (elem) buffer.saveLink(elem, true)),
|
||||
a: Mode("Save hint with prompt", function (elem) buffer.saveLink(elem, false)),
|
||||
f: Mode("Focus frame", function (elem) elem.ownerDocument.defaultView.focus(), function () "//body | //xhtml:body"),
|
||||
o: Mode("Follow hint", function (elem) buffer.followLink(elem, liberator.CURRENT_TAB)),
|
||||
t: Mode("Follow hint in a new tab", function (elem) buffer.followLink(elem, liberator.NEW_TAB)),
|
||||
b: Mode("Follow hint in a background tab", function (elem) buffer.followLink(elem, liberator.NEW_BACKGROUND_TAB)),
|
||||
w: Mode("Follow hint in a new window", function (elem) buffer.followLink(elem, liberator.NEW_WINDOW), extended),
|
||||
F: Mode("Open multiple hints in tabs", followAndReshow),
|
||||
O: Mode("Generate an ':open URL' using hint", function (elem, loc) commandline.open(":", "open " + loc, modes.EX)),
|
||||
T: Mode("Generate a ':tabopen URL' using hint", function (elem, loc) commandline.open(":", "tabopen " + loc, modes.EX)),
|
||||
W: Mode("Generate a ':winopen URL' using hint", function (elem, loc) commandline.open(":", "winopen " + loc, modes.EX)),
|
||||
v: Mode("View hint source", function (elem, loc) buffer.viewSource(loc, false), extended),
|
||||
V: Mode("View hint source in external editor", function (elem, loc) buffer.viewSource(loc, true), extended),
|
||||
y: Mode("Yank hint location", function (elem, loc) util.copyToClipboard(loc, true)),
|
||||
Y: Mode("Yank hint description", function (elem) util.copyToClipboard(elem.textContent || "", true), extended),
|
||||
c: Mode("Open context menu", function (elem) buffer.openContextMenu(elem), extended),
|
||||
i: Mode("Show image", function (elem) liberator.open(elem.src), images),
|
||||
I: Mode("Show image in a new tab", function (elem) liberator.open(elem.src, liberator.NEW_TAB), images)
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -163,7 +163,7 @@ function Hints() //{{{
|
||||
return [elem.value, false];
|
||||
else
|
||||
{
|
||||
for (let [,option] in Iterator(options["hintinputs"].split(",")))
|
||||
for (let [, option] in Iterator(options["hintinputs"].split(",")))
|
||||
{
|
||||
if (option == "value")
|
||||
{
|
||||
@@ -435,7 +435,7 @@ function Hints() //{{{
|
||||
setClass(imgspan, activeHint == hintnum);
|
||||
}
|
||||
|
||||
span.setAttribute("number", showtext ? hintnum + ": " + text.substr(0,50): hintnum);
|
||||
span.setAttribute("number", showtext ? hintnum + ": " + text.substr(0, 50) : hintnum);
|
||||
if (imgspan)
|
||||
imgspan.setAttribute("number", hintnum);
|
||||
else
|
||||
@@ -449,7 +449,7 @@ function Hints() //{{{
|
||||
{
|
||||
let css = [];
|
||||
// FIXME: Broken for imgspans.
|
||||
for (let [,{ doc: doc }] in Iterator(docs))
|
||||
for (let [, { doc: doc }] in Iterator(docs))
|
||||
{
|
||||
for (let elem in buffer.evaluateXPath("//*[@liberator:highlight and @number]", doc))
|
||||
{
|
||||
@@ -560,7 +560,7 @@ function Hints() //{{{
|
||||
*
|
||||
* @param {Event} event The keypress event.
|
||||
*/
|
||||
function onInput (event)
|
||||
function onInput(event)
|
||||
{
|
||||
prevInput = "text";
|
||||
|
||||
@@ -712,7 +712,7 @@ function Hints() //{{{
|
||||
function stringsAtBeginningOfWords(strings, words, allowWordOverleaping)
|
||||
{
|
||||
let strIdx = 0;
|
||||
for (let [,word] in Iterator(words))
|
||||
for (let [, word] in Iterator(words))
|
||||
{
|
||||
if (word.length == 0)
|
||||
continue;
|
||||
|
||||
@@ -45,7 +45,7 @@ function Script(file)
|
||||
this.__context__ = this;
|
||||
|
||||
// This belongs elsewhere
|
||||
for (let [,dir] in Iterator(io.getRuntimeDirectories("plugin")))
|
||||
for (let [, dir] in Iterator(io.getRuntimeDirectories("plugin")))
|
||||
{
|
||||
if (dir.contains(file, false))
|
||||
plugins[this.NAME] = this;
|
||||
@@ -230,7 +230,7 @@ function IO() //{{{
|
||||
let dirs = getPathsFromPathList(options["cdpath"]);
|
||||
let found = false;
|
||||
|
||||
for (let [,dir] in Iterator(dirs))
|
||||
for (let [, dir] in Iterator(dirs))
|
||||
{
|
||||
dir = joinPaths(dir, arg);
|
||||
|
||||
@@ -467,7 +467,7 @@ function IO() //{{{
|
||||
let dirNames = services.get("environment").get("PATH").split(RegExp(liberator.has("Win32") ? ";" : ":"));
|
||||
let commands = [];
|
||||
|
||||
for (let [,dirName] in Iterator(dirNames))
|
||||
for (let [, dirName] in Iterator(dirNames))
|
||||
{
|
||||
let dir = io.getFile(dirName);
|
||||
if (dir.exists() && dir.isDirectory())
|
||||
@@ -743,7 +743,7 @@ function IO() //{{{
|
||||
}
|
||||
else
|
||||
return []; // XXX: or should it throw an error, probably yes?
|
||||
// Yes --djk
|
||||
// Yes, though frankly this should be a precondition so... --djk
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -884,7 +884,7 @@ function IO() //{{{
|
||||
dirs = [io.getCurrentDirectory().path].concat(dirs);
|
||||
|
||||
lookup:
|
||||
for (let [,dir] in Iterator(dirs))
|
||||
for (let [, dir] in Iterator(dirs))
|
||||
{
|
||||
file = joinPaths(dir, program);
|
||||
try
|
||||
@@ -897,7 +897,7 @@ lookup:
|
||||
if (WINDOWS)
|
||||
{
|
||||
let extensions = services.get("environment").get("PATHEXT").split(";");
|
||||
for (let [,extension] in Iterator(extensions))
|
||||
for (let [, extension] in Iterator(extensions))
|
||||
{
|
||||
file = joinPaths(dir, program + extension);
|
||||
if (file.exists())
|
||||
@@ -942,9 +942,9 @@ lookup:
|
||||
liberator.echomsg("Searching for \"" + paths.join(" ") + "\" in \"" + options["runtimepath"] + "\"", 2);
|
||||
|
||||
outer:
|
||||
for (let [,dir] in Iterator(dirs))
|
||||
for (let [, dir] in Iterator(dirs))
|
||||
{
|
||||
for (let [,path] in Iterator(paths))
|
||||
for (let [, path] in Iterator(paths))
|
||||
{
|
||||
let file = joinPaths(dir, path);
|
||||
|
||||
@@ -1028,13 +1028,15 @@ lookup:
|
||||
let heredocEnd = null; // the string which ends the heredoc
|
||||
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))
|
||||
{
|
||||
if (heredocEnd) // we already are in a heredoc
|
||||
{
|
||||
if (heredocEnd.test(line))
|
||||
{
|
||||
command.execute(heredoc, special, count);
|
||||
execute(heredoc);
|
||||
heredoc = "";
|
||||
heredocEnd = null;
|
||||
}
|
||||
@@ -1057,9 +1059,6 @@ lookup:
|
||||
{
|
||||
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);
|
||||
commandline.echo("line " + lineNumber + ":", commandline.HL_LINENR, commandline.APPEND_TO_MESSAGES);
|
||||
liberator.echoerr("E492: Not an editor command: " + line);
|
||||
@@ -1079,15 +1078,11 @@ lookup:
|
||||
heredocEnd = RegExp("^" + matches[2] + "$", "m");
|
||||
if (matches[1])
|
||||
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
|
||||
// process the heredoc anyway - Vim compatible ;-)
|
||||
if (heredocEnd)
|
||||
command.execute(heredoc, special, count);
|
||||
execute(heredoc);
|
||||
}
|
||||
|
||||
if (scriptNames.indexOf(file.path) == -1)
|
||||
|
||||
@@ -111,7 +111,7 @@ const liberator = (function () //{{{
|
||||
{
|
||||
function addChildren(node, parent)
|
||||
{
|
||||
for (let [,item] in Iterator(node.childNodes))
|
||||
for (let [, item] in Iterator(node.childNodes))
|
||||
{
|
||||
if (item.childNodes.length == 0 && item.localName == "menuitem"
|
||||
&& !/rdf:http:/.test(item.getAttribute("label"))) // FIXME
|
||||
@@ -163,7 +163,7 @@ const liberator = (function () //{{{
|
||||
opts: config.guioptions,
|
||||
setter: function (opts)
|
||||
{
|
||||
for (let [opt, [,ids]] in Iterator(this.opts))
|
||||
for (let [opt, [, ids]] in Iterator(this.opts))
|
||||
{
|
||||
ids.map(function (id) document.getElementById(id))
|
||||
.forEach(function (elem)
|
||||
@@ -220,7 +220,7 @@ const liberator = (function () //{{{
|
||||
{
|
||||
setter: function (value)
|
||||
{
|
||||
for (let [,group] in Iterator(groups))
|
||||
for (let [, group] in Iterator(groups))
|
||||
group.setter(value);
|
||||
return value;
|
||||
},
|
||||
@@ -351,7 +351,7 @@ const liberator = (function () //{{{
|
||||
// TODO: why are these sorts of properties arrays? --djk
|
||||
let dialogs = config.dialogs;
|
||||
|
||||
for (let [,dialog] in Iterator(dialogs))
|
||||
for (let [, dialog] in Iterator(dialogs))
|
||||
{
|
||||
if (util.compareIgnoreCase(arg, dialog[0]) == 0)
|
||||
{
|
||||
@@ -387,7 +387,7 @@ const liberator = (function () //{{{
|
||||
if (!items.some(function (i) i.fullMenuPath == arg))
|
||||
return void liberator.echoerr("E334: Menu not found: " + arg);
|
||||
|
||||
for (let [,item] in Iterator(items))
|
||||
for (let [, item] in Iterator(items))
|
||||
{
|
||||
if (item.fullMenuPath == arg)
|
||||
item.doCommand();
|
||||
@@ -539,7 +539,7 @@ const liberator = (function () //{{{
|
||||
/* XXX: Inline style. */
|
||||
e.enabled ? <span style="color: blue;">enabled</span>
|
||||
: <span style="color: red;">disabled</span>,
|
||||
e.description] for ([,e] in Iterator(extensions)))
|
||||
e.description] for ([, e] in Iterator(extensions)))
|
||||
);
|
||||
|
||||
commandline.echo(list, commandline.HL_NORMAL, commandline.FORCE_MULTILINE);
|
||||
@@ -794,6 +794,31 @@ const liberator = (function () //{{{
|
||||
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]"],
|
||||
"Show version information",
|
||||
function (args)
|
||||
@@ -962,9 +987,9 @@ const liberator = (function () //{{{
|
||||
/** @property An RC file to use rather than the default. */
|
||||
rcFile: null,
|
||||
/** @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. */
|
||||
postCommand: null
|
||||
postCommands: null
|
||||
},
|
||||
|
||||
registerObserver: registerObserver,
|
||||
@@ -979,7 +1004,7 @@ const liberator = (function () //{{{
|
||||
triggerObserver: function (type)
|
||||
{
|
||||
let args = Array.slice(arguments, 1);
|
||||
for (let [,func] in Iterator(observers[type] || []))
|
||||
for (let [, func] in Iterator(observers[type] || []))
|
||||
func.apply(null, args);
|
||||
},
|
||||
|
||||
@@ -1455,7 +1480,7 @@ const liberator = (function () //{{{
|
||||
}
|
||||
|
||||
liberator.echomsg('Searching for "plugin/**/*.{js,vimp}" in "'
|
||||
+ [dir.path.replace(/.plugin$/, "") for ([,dir] in Iterator(dirs))].join(",") + '"', 2);
|
||||
+ [dir.path.replace(/.plugin$/, "") for ([, dir] in Iterator(dirs))].join(",") + '"', 2);
|
||||
|
||||
dirs.forEach(function (dir) {
|
||||
liberator.echomsg("Searching for \"" + (dir.path + "/**/*.{js,vimp}") + "\"", 3);
|
||||
@@ -1584,7 +1609,7 @@ const liberator = (function () //{{{
|
||||
else if (!where)
|
||||
where = liberator.CURRENT_TAB;
|
||||
|
||||
for (let [,url] in Iterator(urls))
|
||||
for (let [, url] in Iterator(urls))
|
||||
{
|
||||
open(url, where);
|
||||
where = liberator.NEW_BACKGROUND_TAB;
|
||||
|
||||
@@ -168,7 +168,7 @@ function Mappings() //{{{
|
||||
{
|
||||
let maps = stack[mode] || [];
|
||||
|
||||
for (let [,map] in Iterator(maps))
|
||||
for (let [, map] in Iterator(maps))
|
||||
{
|
||||
if (map.hasName(cmd))
|
||||
return map;
|
||||
@@ -297,7 +297,7 @@ function Mappings() //{{{
|
||||
args = args[0];
|
||||
|
||||
let found = false;
|
||||
for (let [,mode] in Iterator(modes))
|
||||
for (let [, mode] in Iterator(modes))
|
||||
{
|
||||
if (mappings.hasMap(mode, args))
|
||||
{
|
||||
@@ -413,9 +413,9 @@ function Mappings() //{{{
|
||||
let map = new Map(modes, keys, description || "User defined mapping", action, extra);
|
||||
|
||||
// remove all old mappings to this key sequence
|
||||
for (let [,name] in Iterator(map.names))
|
||||
for (let [, name] in Iterator(map.names))
|
||||
{
|
||||
for (let [,mode] in Iterator(map.modes))
|
||||
for (let [, mode] in Iterator(map.modes))
|
||||
removeMap(mode, name);
|
||||
}
|
||||
|
||||
@@ -461,9 +461,9 @@ function Mappings() //{{{
|
||||
let mappings = user[mode].concat(main[mode]);
|
||||
let matches = [];
|
||||
|
||||
for (let [,map] in Iterator(mappings))
|
||||
for (let [, map] in Iterator(mappings))
|
||||
{
|
||||
for (let [,name] in Iterator(map.names))
|
||||
for (let [, name] in Iterator(map.names))
|
||||
{
|
||||
if (name.indexOf(prefix) == 0 && name.length > prefix.length)
|
||||
{
|
||||
|
||||
@@ -216,6 +216,7 @@ const modes = (function () //{{{
|
||||
},
|
||||
|
||||
// TODO: Deprecate this in favor of addMode? --Kris
|
||||
// Ya --djk
|
||||
setCustomMode: function (modestr, oneventfunc, stopfunc)
|
||||
{
|
||||
// TODO this.plugin[id]... ('id' maybe submode or what..)
|
||||
|
||||
@@ -111,18 +111,24 @@ function Option(names, description, type, defaultValue, extraInfo) //{{{
|
||||
* @see #has
|
||||
*/
|
||||
this.checkHas = extraInfo.checkHas || null;
|
||||
|
||||
/**
|
||||
* @property {boolean} Set to true whenever the option is first set. This
|
||||
* is useful to see whether it was changed from its default value
|
||||
* interactively or by some RC file.
|
||||
*/
|
||||
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
|
||||
if (this.type == "boolean")
|
||||
{
|
||||
this.names = []; // reset since order is important
|
||||
for (let [,name] in Iterator(names))
|
||||
for (let [, name] in Iterator(names))
|
||||
{
|
||||
this.names.push(name);
|
||||
this.names.push("no" + name);
|
||||
@@ -550,7 +556,7 @@ function Options() //{{{
|
||||
if (!args.length)
|
||||
args[0] = "";
|
||||
|
||||
for (let [,arg] in args)
|
||||
for (let [, arg] in args)
|
||||
{
|
||||
if (bang)
|
||||
{
|
||||
@@ -572,6 +578,7 @@ function Options() //{{{
|
||||
}
|
||||
|
||||
if (name == "all" && reset)
|
||||
// TODO: Why? --djk
|
||||
liberator.echoerr("You can't reset all options, it could make " + config.hostApplication + " unusable.");
|
||||
else if (name == "all")
|
||||
options.listPrefs(onlyNonDefault, "");
|
||||
@@ -620,7 +627,10 @@ function Options() //{{{
|
||||
option.reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
option.setFrom = modifiers.setFrom || null;
|
||||
option.reset();
|
||||
}
|
||||
}
|
||||
// read access
|
||||
else if (opt.get)
|
||||
@@ -630,9 +640,15 @@ function Options() //{{{
|
||||
else
|
||||
{
|
||||
if (option.type == "boolean")
|
||||
liberator.echo((opt.optionValue ? " " : "no") + option.name);
|
||||
var msg = (opt.optionValue ? " " : "no") + option.name;
|
||||
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
|
||||
@@ -640,6 +656,8 @@ function Options() //{{{
|
||||
// improved. i.e. Vim's behavior is pretty sloppy to no real benefit
|
||||
else
|
||||
{
|
||||
option.setFrom = modifiers.setFrom || null;
|
||||
|
||||
if (opt.option.type == "boolean")
|
||||
{
|
||||
if (opt.valueGiven)
|
||||
@@ -832,9 +850,10 @@ function Options() //{{{
|
||||
|
||||
commands.add(["setl[ocal]"],
|
||||
"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,
|
||||
@@ -849,9 +868,10 @@ function Options() //{{{
|
||||
|
||||
commands.add(["setg[lobal]"],
|
||||
"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,
|
||||
@@ -866,10 +886,7 @@ function Options() //{{{
|
||||
|
||||
commands.add(["se[t]"],
|
||||
"Set an option",
|
||||
function (args)
|
||||
{
|
||||
return setAction(args);
|
||||
},
|
||||
function (args, modifiers) { setAction(args, modifiers); },
|
||||
{
|
||||
bang: true,
|
||||
completer: function (context, args)
|
||||
@@ -891,12 +908,7 @@ function Options() //{{{
|
||||
"Delete a variable",
|
||||
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);
|
||||
if (!reference[0])
|
||||
@@ -1180,7 +1192,7 @@ function Options() //{{{
|
||||
let prefArray = services.get("pref").getChildList("", { value: 0 });
|
||||
prefArray.sort();
|
||||
let prefs = function () {
|
||||
for (let [,pref] in Iterator(prefArray))
|
||||
for (let [, pref] in Iterator(prefArray))
|
||||
{
|
||||
let userValue = services.get("pref").prefHasUserValue(pref);
|
||||
if (onlyNonDefault && !userValue || pref.indexOf(filter) == -1)
|
||||
|
||||
@@ -142,7 +142,7 @@ function Highlights(name, store)
|
||||
let styles = storage.styles;
|
||||
|
||||
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("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");
|
||||
@@ -395,7 +395,7 @@ function Styles(name, store)
|
||||
if (matches.length == 0)
|
||||
return;
|
||||
|
||||
for (let [,sheet] in Iterator(matches.reverse()))
|
||||
for (let [, sheet] in Iterator(matches.reverse()))
|
||||
{
|
||||
if (name)
|
||||
{
|
||||
@@ -509,7 +509,7 @@ let (array = util.Array)
|
||||
catch (e) {}
|
||||
context.fork("others", 0, this, function (context) {
|
||||
context.title = ["Site"];
|
||||
context.completions = [[s, ""] for ([,s] in Iterator(styles.sites))];
|
||||
context.completions = [[s, ""] for ([, s] in Iterator(styles.sites))];
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -729,7 +729,7 @@ liberator.registerObserver("load_completion", function () {
|
||||
});
|
||||
|
||||
context.title = ["Color Scheme", "Runtime Path"];
|
||||
context.completions = [[c.leafName.replace(/\.vimp$/, ""), c.parent.path] for ([,c] in Iterator(colors))]
|
||||
context.completions = [[c.leafName.replace(/\.vimp$/, ""), c.parent.path] for ([, c] in Iterator(colors))]
|
||||
};
|
||||
|
||||
// FIXME: extract from :highlight
|
||||
|
||||
@@ -1014,7 +1014,7 @@ function Tabs() //{{{
|
||||
*/
|
||||
stopAll: function ()
|
||||
{
|
||||
for (let [,browser] in this.browsers)
|
||||
for (let [, browser] in this.browsers)
|
||||
browser.stop();
|
||||
},
|
||||
|
||||
@@ -1072,7 +1072,7 @@ function Tabs() //{{{
|
||||
let lowerBuffer = buffer.toLowerCase();
|
||||
let first = tabs.index() + (reverse ? 0 : 1);
|
||||
let nbrowsers = getBrowser().browsers.length;
|
||||
for (let [i,] in tabs.browsers)
|
||||
for (let [i, ] in tabs.browsers)
|
||||
{
|
||||
let index = (i + first) % nbrowsers;
|
||||
let url = getBrowser().getBrowserAtIndex(index).contentDocument.location.href;
|
||||
|
||||
@@ -398,7 +398,7 @@ function CommandLine() //{{{
|
||||
try
|
||||
{
|
||||
this.waiting = true;
|
||||
for (let [,context] in Iterator(list))
|
||||
for (let [, context] in Iterator(list))
|
||||
{
|
||||
function done() !(idx >= n + context.items.length || idx == -2 && !context.items.length);
|
||||
while (context.incomplete && !done())
|
||||
@@ -871,7 +871,7 @@ function CommandLine() //{{{
|
||||
////////////////////// COMMANDS ////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
var echoCommands = [
|
||||
[
|
||||
{
|
||||
name: "ec[ho]",
|
||||
description: "Echo the expression",
|
||||
@@ -887,9 +887,7 @@ function CommandLine() //{{{
|
||||
description: "Echo the expression as an informational message",
|
||||
action: liberator.echomsg
|
||||
}
|
||||
];
|
||||
|
||||
echoCommands.forEach(function (command) {
|
||||
].forEach(function (command) {
|
||||
commands.add([command.name],
|
||||
command.description,
|
||||
function (args)
|
||||
@@ -991,8 +989,7 @@ function CommandLine() //{{{
|
||||
triggerCallback: function (type, mode, data)
|
||||
{
|
||||
if (callbacks[type] && callbacks[type][mode])
|
||||
return callbacks[type][mode].call(this, data);
|
||||
return false;
|
||||
callbacks[type][mode].call(this, data);
|
||||
},
|
||||
|
||||
runSilently: function (func, self)
|
||||
@@ -1017,8 +1014,10 @@ function CommandLine() //{{{
|
||||
// completion preview.
|
||||
return commandWidget.inputField.editor.rootElement.firstChild.textContent;
|
||||
}
|
||||
catch (e) {}
|
||||
return commandWidget.value;
|
||||
catch (e)
|
||||
{
|
||||
return commandWidget.value;
|
||||
}
|
||||
},
|
||||
set command(cmd) commandWidget.value = cmd,
|
||||
|
||||
@@ -1278,10 +1277,10 @@ function CommandLine() //{{{
|
||||
if (completions)
|
||||
completions.previewClear();
|
||||
if (!currentExtendedMode)
|
||||
return true;
|
||||
return;
|
||||
|
||||
// user pressed ENTER to carry out a command
|
||||
// user pressing ESCAPE is handled in the global onEscape
|
||||
// user pressed <Enter> to carry out a command
|
||||
// user pressing <Esc> is handled in the global onEscape
|
||||
// FIXME: <Esc> should trigger "cancel" event
|
||||
if (events.isAcceptKey(key))
|
||||
{
|
||||
@@ -1289,10 +1288,9 @@ function CommandLine() //{{{
|
||||
keepCommand = true;
|
||||
currentExtendedMode = null; // Don't let modes.pop trigger "cancel"
|
||||
modes.pop(!this.silent);
|
||||
|
||||
return commandline.triggerCallback("submit", mode, command);
|
||||
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))
|
||||
{
|
||||
// prevent tab from moving to the next field
|
||||
@@ -1303,9 +1301,8 @@ function CommandLine() //{{{
|
||||
history.select(/Up/.test(key), !/(Page|S-)/.test(key));
|
||||
else
|
||||
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>")
|
||||
{
|
||||
// prevent tab from moving to the next field
|
||||
@@ -1313,7 +1310,6 @@ function CommandLine() //{{{
|
||||
event.stopPropagation();
|
||||
|
||||
tabTimer.tell(event);
|
||||
return false;
|
||||
}
|
||||
else if (key == "<BS>")
|
||||
{
|
||||
@@ -1331,7 +1327,7 @@ function CommandLine() //{{{
|
||||
{
|
||||
//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")
|
||||
{
|
||||
@@ -2087,7 +2083,8 @@ function StatusLine() //{{{
|
||||
var value = aURI.spec;
|
||||
// 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))
|
||||
try {
|
||||
try
|
||||
{
|
||||
value = decodeURI(value)
|
||||
// 1. decodeURI decodes %25 to %, which creates unintended
|
||||
// encoding sequences. Re-encode it, unless it's part of
|
||||
@@ -2098,7 +2095,8 @@ function StatusLine() //{{{
|
||||
// by the location bar (bug 410726).
|
||||
.replace(/%(?!3B|2F|3F|3A|40|26|3D|2B|24|2C|23)|[\r\n\t]/ig,
|
||||
encodeURIComponent);
|
||||
} catch (e) {}
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
// Encode invisible characters (soft hyphen, zero-width space, BOM,
|
||||
// line and paragraph separator, word joiner, invisible times,
|
||||
|
||||
@@ -817,13 +817,13 @@ util.Array.uniq = function uniq(ary, unsorted)
|
||||
let ret = [];
|
||||
if (unsorted)
|
||||
{
|
||||
for (let [,item] in Iterator(ary))
|
||||
for (let [, item] in Iterator(ary))
|
||||
if (ret.indexOf(item) == -1)
|
||||
ret.push(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (let [,item] in Iterator(ary.sort()))
|
||||
for (let [, item] in Iterator(ary.sort()))
|
||||
{
|
||||
if (item != last || !ret.length)
|
||||
ret.push(item);
|
||||
@@ -889,8 +889,8 @@ Struct.prototype = {
|
||||
|
||||
// Add no-sideeffect array methods. Can't set new Array() as the prototype or
|
||||
// get length() won't work.
|
||||
for (let [,k] in Iterator(["concat", "every", "filter", "forEach", "indexOf", "join", "lastIndexOf",
|
||||
"map", "reduce", "reduceRight", "reverse", "slice", "some", "sort"]))
|
||||
for (let [, k] in Iterator(["concat", "every", "filter", "forEach", "indexOf", "join", "lastIndexOf",
|
||||
"map", "reduce", "reduceRight", "reverse", "slice", "some", "sort"]))
|
||||
Struct.prototype[k] = Array.prototype[k];
|
||||
|
||||
// vim: set fdm=marker sw=4 ts=4 et:
|
||||
|
||||
@@ -196,7 +196,7 @@ function Addressbook() //{{{
|
||||
else
|
||||
{
|
||||
let list = template.tabular(["Name", "Address"], [],
|
||||
[[util.clip(a[0], 50), address[1]] for ([,address] in Iterator(addresses))]
|
||||
[[util.clip(a[0], 50), address[1]] for ([, address] in Iterator(addresses))]
|
||||
);
|
||||
commandline.echo(list, commandline.HL_NORMAL, commandline.FORCE_MULTILINE);
|
||||
}
|
||||
|
||||
@@ -68,7 +68,8 @@ const config = (function () //{{{
|
||||
// focusContent() focuses this widget
|
||||
get mainWidget() this.isComposeWindow ? document.getElementById("content-frame") : GetThreadTree(),
|
||||
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"],
|
||||
["FolderLoad", "Triggered after switching folders in " + host],
|
||||
|
||||
@@ -217,7 +217,7 @@ function Mail() //{{{
|
||||
services.get("smtpService").defaultServer = server;
|
||||
return value;
|
||||
},
|
||||
completer: function (context) [[s.key, s.serverURI] for ([,s] in Iterator(mail.smtpServers))],
|
||||
completer: function (context) [[s.key, s.serverURI] for ([, s] in Iterator(mail.smtpServers))],
|
||||
validator: Option.validateCompleter
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Muttator configuration file
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2009 Aug 3
|
||||
" Last Change: 2009 Aug 27
|
||||
|
||||
" 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ tabl[ast] tabn[ext] tabp[revious] tabr[ewind] tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how]
|
||||
\ toolbart[oggle] tp[revious] una[bbreviate] unl[et] unm[ap] ve[rsion] vie[wsource] viu[sage] vm[ap] vmapc[lear] vno[remap]
|
||||
\ vu[nmap] w[rite] zo[om]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ tabp[revious] tabr[ewind] tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious]
|
||||
\ 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]
|
||||
\ contained
|
||||
|
||||
syn match muttatorCommand "!" contained
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
(this might change again, as this is REALLY inconsistent, and i don't
|
||||
know if I like copying bugs)
|
||||
|
||||
* add [c]:verbose[c]
|
||||
* add [c]:window[c] to run a command in a new window
|
||||
* add ! version of :delbmarks to delete all bookmarks.
|
||||
* new "t" option for 'complete' to also switch to open tabs with :open
|
||||
|
||||
@@ -47,7 +47,7 @@ const config = { //{{{
|
||||
},
|
||||
|
||||
get visualbellWindow() getBrowser().mPanelContainer,
|
||||
styleableChrome: "chrome://browser/content/browser.xul",
|
||||
styleableChrome: ["chrome://browser/content/browser.xul"],
|
||||
|
||||
autocommands: [["BookmarkAdd", "Triggered after a page is bookmarked"],
|
||||
["ColorScheme", "Triggered after a color scheme has been loaded"],
|
||||
@@ -249,7 +249,7 @@ const config = { //{{{
|
||||
|
||||
let menu = document.getElementById("viewSidebarMenu");
|
||||
|
||||
for (let [,panel] in Iterator(menu.childNodes))
|
||||
for (let [, panel] in Iterator(menu.childNodes))
|
||||
{
|
||||
if (compare(panel.label, arg))
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: VIMperator configuration file
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2009 Aug 10
|
||||
" Last Change: 2009 Aug 27
|
||||
|
||||
" 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ tabdu[plicate] tabe[dit] tabfir[st] tabl[ast] tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs
|
||||
\ tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ tabe[dit] tabfir[st] tabl[ast] tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how]
|
||||
\ tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et]
|
||||
\ 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]
|
||||
\ contained
|
||||
|
||||
|
||||
@@ -91,6 +91,6 @@ Enable _passthrough_ mode on *some* Google sites:
|
||||
Set the filetype to mail when editing email at Gmail:
|
||||
|
||||
\{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:
|
||||
|
||||
@@ -23,7 +23,7 @@ ________________________________________________________________________________
|
||||
|:pa| |:pageinfo| +
|
||||
||: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.
|
||||
________________________________________________________________________________
|
||||
|
||||
// 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>
|
||||
|
||||
<div class="key">:h[elp] <span class="argument">{subject}</span></div><br />
|
||||
<div class="key"><F1></div></p>
|
||||
<span class="key">:h[elp] <span class="argument">{subject}</span></span><br />
|
||||
<span class="key"><F1></span></p>
|
||||
<div class="quoteblock">
|
||||
<div class="quoteblock-content">
|
||||
<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]:unlet[c]|| Delete a variable +
|
||||
||[c]:unmap[c]|| Remove a mapping +
|
||||
||[c]:verbose[c]|| Execute a command with 'verbose' set +
|
||||
||[c]:version[c]|| Show version information +
|
||||
||[c]:viewsource[c]|| View source code of current document +
|
||||
||[c]:viusage[c]|| List all mappings with a short description +
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
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
|
||||
VIMperator :)*
|
||||
+++</div>+++
|
||||
VIMperator :)
|
||||
</p>
|
||||
++++++
|
||||
|
||||
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
|
||||
: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
|
||||
type that key, however there are some exceptions which allow for a much larger
|
||||
|
||||
@@ -550,7 +550,7 @@ ____
|
||||
|\'nomore'| |\'more'|
|
||||
||'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]
|
||||
|
||||
+++<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>+++
|
||||
++++++
|
||||
<p style="text-align: center; font-weight: bold;">
|
||||
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.
|
||||
</p>
|
||||
++++++
|
||||
|
||||
If you've started using Vimperator from scratch (i.e., without any
|
||||
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.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:norm| |:normal|
|
||||
||: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[rsion][!]||
|
||||
________________________________________________________________________________
|
||||
|
||||
@@ -304,7 +304,7 @@ td span.tag {
|
||||
padding-top: 25px !important;
|
||||
}
|
||||
|
||||
div.key {
|
||||
span.key {
|
||||
color: rgb(255, 0, 255); /* magenta */
|
||||
min-width: 120px; /* with 20px padding actually 140px */
|
||||
/*padding-bottom: 5px;*/
|
||||
|
||||
@@ -150,7 +150,7 @@ commands.addUserCommand(["regr[essions]"],
|
||||
commandline.updateOutputHeight = updateOutputHeight;
|
||||
}
|
||||
|
||||
function run ()
|
||||
function run()
|
||||
{
|
||||
let now = Date.now();
|
||||
let totalTests = tests.length + functions.length;
|
||||
@@ -170,7 +170,7 @@ commands.addUserCommand(["regr[essions]"],
|
||||
continue;
|
||||
|
||||
let testDescription = util.clip(test.cmds.join(" -> "), 80);
|
||||
for (let [,cmd] in Iterator(test.cmds))
|
||||
for (let [, cmd] in Iterator(test.cmds))
|
||||
{
|
||||
if (skipTests.indexOf(cmd) != -1)
|
||||
{
|
||||
|
||||
@@ -51,7 +51,7 @@ const config = { //{{{
|
||||
// focusContent() focuses this widget gSongbirdWindowController takes care of the focus.
|
||||
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"],
|
||||
["ColorScheme", "Triggered after a color scheme has been loaded"],
|
||||
|
||||
@@ -21,7 +21,7 @@ function Library() // {{{
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
// TODO: return some actually useful objects. ;-)
|
||||
return {
|
||||
return {
|
||||
|
||||
/**
|
||||
* Returns an array of all the artist names in the main library.
|
||||
@@ -65,7 +65,7 @@ function Library() // {{{
|
||||
.map(function (track) track.getProperty(SBProperties.trackName));
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
//}}}
|
||||
} // }}}
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ function Player() // {{{
|
||||
{
|
||||
let pages = player.getMediaPages();
|
||||
|
||||
for ([,page] in Iterator(pages))
|
||||
for ([, page] in Iterator(pages))
|
||||
{
|
||||
if (util.compareIgnoreCase(arg, page.contentTitle) == 0)
|
||||
{
|
||||
@@ -609,7 +609,7 @@ function Player() // {{{
|
||||
return tracksList;
|
||||
},
|
||||
|
||||
searchView: function searchView (args)
|
||||
searchView: function searchView(args)
|
||||
{
|
||||
let currentView = _SBGetCurrentView();
|
||||
let mediaItemList = currentView.mediaList;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Xulmus configuration file
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2009 Aug 3
|
||||
" Last Change: 2009 Aug 27
|
||||
|
||||
" 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
|
||||
\ 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
|
||||
\ pc[lose] pl[ay] playern[ext] playerp[lay] playerpa[use] playerpr[ev] players[top] pm[ap] pmap[clear] pno[remap]
|
||||
\ 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
|
||||
\ 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]
|
||||
\ 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]
|
||||
\ tabfir[st] tabl[ast] tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how]
|
||||
\ tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et]
|
||||
\ unm[ap] ve[rsion] vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vol[ume] vu[nmap] w[rite] wc[lose] win[open]
|
||||
\ winc[lose] wine[dit] wo[pen] wq wqa[ll] xa[ll] zo[om]
|
||||
\ pl[ay] playern[ext] playerp[lay] playerpa[use] playerpr[ev] players[top] pm[ap] pmap[clear] pno[remap] 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 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] 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] tabfir[st] tabl[ast]
|
||||
\ tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how] tbt[oggle] time tn[ext]
|
||||
\ toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et] unm[ap] verb[ose] ve[rsion]
|
||||
\ vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vol[ume] vu[nmap] w[rite] wc[lose] win[open] winc[lose] wine[dit]
|
||||
\ wo[pen] wq wqa[ll] xa[ll] zo[om]
|
||||
\ 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:
|
||||
|
||||
\{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:
|
||||
|
||||
@@ -23,7 +23,7 @@ ________________________________________________________________________________
|
||||
|:pa| |:pageinfo| +
|
||||
||: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.
|
||||
________________________________________________________________________________
|
||||
|
||||
// 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>
|
||||
|
||||
<div class="key">:h[elp] <span class="argument">{subject}</span></div><br />
|
||||
<div class="key"><F1></div></p>
|
||||
<span class="key">:h[elp] <span class="argument">{subject}</span></span><br />
|
||||
<span class="key"><F1></span></p>
|
||||
<div class="quoteblock">
|
||||
<div class="quoteblock-content">
|
||||
<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]:unlet[c]|| Delete a variable +
|
||||
||[c]:unmap[c]|| Remove a mapping +
|
||||
||[c]:verbose[c]|| Execute a command with 'verbose' set +
|
||||
||[c]:version[c]|| Show version information +
|
||||
||[c]:viewsource[c]|| View source code of current document +
|
||||
||[c]:viusage[c]|| List all mappings with a short description +
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LOGO
|
||||
logo:[]
|
||||
|
||||
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
|
||||
: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
|
||||
type that key, however there are some exceptions which allow for a much larger
|
||||
|
||||
@@ -537,7 +537,7 @@ ____
|
||||
|\'nomore'| |\'more'|
|
||||
||'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[rsion][!]||
|
||||
________________________________________________________________________________
|
||||
|
||||
@@ -304,7 +304,7 @@ td span.tag {
|
||||
padding-top: 25px !important;
|
||||
}
|
||||
|
||||
div.key {
|
||||
span.key {
|
||||
color: rgb(255, 0, 255); /* magenta */
|
||||
min-width: 120px; /* with 20px padding actually 140px */
|
||||
/*padding-bottom: 5px;*/
|
||||
|
||||
Reference in New Issue
Block a user