mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-13 10:25:46 +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:
|
||||
|
||||
Reference in New Issue
Block a user