1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-14 14:55:51 +01:00

Merge branch 'master' into vimperator-2.1

This commit is contained in:
Kris Maglione
2008-12-20 11:04:28 -05:00
13 changed files with 133 additions and 20 deletions

View File

@@ -113,3 +113,11 @@ ${DOC_FILES}: %.html: %.txt $(BASE)/Makefile.common locale/en-US/asciidoc.conf
@echo "DOC $@"
${ASCIIDOC} --unsafe -a linkcss -a quirks! -a doctitle="$(shell basename $@)" -o $@ $<
T2T = $(wildcard locale/*/*.t2t)
t2t: $(T2T:%.t2t=%.xhtml)
$(T2T:%.t2t=%.xhtml): locale/en-US/config.t2t
%.xhtml: %.t2t
@echo "T2T $@"
txt2tags --quiet $<

View File

@@ -1651,6 +1651,15 @@ function Marks() //{{{
return {
/**
* Add a named mark for the current buffer, at its current position.
* If mark matches [A-Z], it's considered a URL mark, and will jump to
* the same position at the same URL no matter what buffer it's
* selected from. If it matches [a-z'"], it's a local mark, and can
* only be recalled from a buffer with a matching URL.
*
* @param {string} mark
*/
// TODO: add support for frameset pages
add: function (mark, silent)
{
@@ -1686,6 +1695,15 @@ function Marks() //{{{
}
},
/**
* Remove all marks matching <b>filter</b>. If <b>special</b> is
* given, removes all local marks.
*
* @param {string} filter A string containing one character for each
* mark to be removed.
* @param {boolean} special Whether to delete all local marks.
*/
// FIXME: Shouldn't special be replaced with a null filter?
remove: function (filter, special)
{
if (special)
@@ -1696,20 +1714,24 @@ function Marks() //{{{
}
else
{
let pattern = new RegExp("[" + filter.replace(/\s+/g, "") + "]");
for (let [mark,] in urlMarks)
{
if (pattern.test(mark))
if (filter.indexOf(mark) >= 0)
removeURLMark(mark);
}
for (let [mark,] in localMarks)
{
if (pattern.test(mark))
if (filter.indexOf(mark) >= 0)
removeLocalMark(mark);
}
}
},
/**
* Jumps to the named mark. See {@link #add}
*
* @param {string} mark The mark to jump to.
*/
jumpTo: function (mark)
{
let ok = false;
@@ -1765,6 +1787,11 @@ function Marks() //{{{
liberator.echoerr("E20: Mark not set"); // FIXME: move up?
},
/**
* List all marks matching <b>filter</b>.
*
* @param {string} filter
*/
list: function (filter)
{
let marks = getSortedMarks();

View File

@@ -28,6 +28,12 @@ the terms of any one of the MPL, the GPL or the LGPL.
/** @scope modules */
/**
* A class representing EX commands. Instances are created by
* the {@link Commands} class.
*
* @private
*/
// Do NOT create instances of this class yourself, use the helper method
// commands.add() instead
function Command(specs, description, action, extraInfo) //{{{
@@ -73,30 +79,79 @@ function Command(specs, description, action, extraInfo) //{{{
};
let expandedSpecs = parseSpecs(specs);
/** @property {string[]} All of this command's name spacs. e.g., "com[mand]" */
this.specs = specs;
/** @property {string[]} All of this command's short names, e.g., "com" */
this.shortNames = expandedSpecs.shortNames;
/** @property {string[]} All of this command's long names, e.g., "command" */
this.longNames = expandedSpecs.longNames;
// return the primary command name (the long name of the first spec listed)
/** @property {string} The command's cannonical name. */
this.name = this.longNames[0];
/** @property {string[]} All of this command's long and short names. */
this.names = expandedSpecs.names; // return all command name aliases
/** @property {string} This command's description, as shown in :exinfo */
this.description = description || "";
/** @property {function (Args)} The function called to execute this command. */
this.action = action;
/** @property {string} This command's argument count spec. @see Commands#parseArguments */
this.argCount = extraInfo.argCount || 0;
/** @property {function (CompletionContext, Args)} This command's completer. @see CompletionContext */
this.completer = extraInfo.completer || null;
/** @property {boolean} Whether this command accepts a here document. */
this.hereDoc = extraInfo.hereDoc || false;
/** @property {Array} The options this command takes. @see Commands@parseArguments */
this.options = extraInfo.options || [];
/** @property {boolean} Whether this command may be called with a bang, e.g., :com! */
this.bang = extraInfo.bang || false;
/** @property {boolean} Whether this command may be called with a count, e.g., :12bdel */
this.count = extraInfo.count || false;
/**
* @property {boolean} At what index this command's literal
* arguments begin. For instance, with a value of 2, all arguments
* starting with the third are parsed as a single string, with all
* quoting characters passed literally. This is especially useful for
* commands which take key mappings or ex command lines as
* arguments.
*/
this.literal = extraInfo.literal == null ? null : extraInfo.literal;
/**
* @property {function} Should return an array of <b>Object</b>s
* suitable to be passed to {@link Commands#commandToString}, one
* for each past invocation which should be restored on subsequent
* @liberator startups.
*/
this.serial = extraInfo.serial;
/**
* @property {boolean} Specifies whether this is a user command.
* User commands may be created by plugins, or directly by users,
* and, unlike basic commands, may be overwritten. Users and
* plugin authors should create only user commands.
*/
this.isUserCommand = extraInfo.isUserCommand || false;
/**
* @property {string} For commands defined via :command, contains
* the EX command line to be executed upon invocation.
*/
this.replacementText = extraInfo.replacementText || null;
};
Command.prototype = {
/**
* Execute this command.
*
* @param {Args} args The parsed args to be passed to
* {@link #action}.
* @param {boolean} bang @deprecated Whether this command was
* executed with a trailing !.
* @param {number} count @deprecated Whether this command was
* executed a leading count.
* @param modifiers Any modifiers to be passed to
* {@link action}
*/
execute: function (args, bang, count, modifiers)
{
// XXX
@@ -130,6 +185,11 @@ Command.prototype = {
exec(args);
},
/**
* Returns whether this command may be invoked via <b>name</b>.
*
* @param {string} name
*/
hasName: function (name)
{
for (let [,spec] in Iterator(this.specs))
@@ -145,6 +205,18 @@ Command.prototype = {
return false;
},
/**
* A helper function to parse an argument string.
*
* @param {string} args The argument string to parse.
* @param {CompletionContext} complete A completion context.
* Non-null when the arguments are being parsed for completion
* purposes.
* @param {Object} extra Extra keys to be spliced into the
* returned Args object.
* @returns Args
* @see Commands#parseArgs
*/
parseArgs: function (args, complete, extra) commands.parseArgs(args, this.options, this.argCount, false, this.literal, complete, extra)
}; //}}}

View File

@@ -499,10 +499,12 @@ function Hints() //{{{
return function (linkText)
{
liberator.dump(hintStrings);
if (hintStrings.length == 1 && hintStrings[0].length == 0)
return true;
let words = tokenize(linkText, wordSplitRegex);
let words = tokenize(wordSplitRegex, linkText);
if (hintStrings.length == 1)
return charsAtBeginningOfWords(hintStrings[0], words, allowWordOverleaping);
else
@@ -510,8 +512,7 @@ function Hints() //{{{
};
} //}}}
let hintMatching = options["hintmatching"];
switch (hintMatching)
switch (options["hintmatching"])
{
case "contains" : return containsMatcher(hintString);
case "wordstartswith": return wordStartsWithMatcher(hintString, /*allowWordOverleaping=*/ true);

View File

@@ -868,6 +868,8 @@ lookup:
{
ioManager.sourcing.line = i + 1;
// skip line comments and blank lines
line = line.replace(/\r$/, "");
if (/^\s*(".*)?$/.test(line))
continue;
@@ -899,7 +901,7 @@ lookup:
if (matches)
{
args = matches[1];
heredocEnd = new RegExp("^" + matches[2] + "$", "m");
heredocEnd = RegExp("^" + matches[2] + "$", "m");
if (matches[1])
heredoc = matches[1] + "\n";
}

View File

@@ -267,7 +267,6 @@ function CommandLine() //{{{
substring = substring.substr(value.length);
this.removeSubstring = substring;
// highlight="Preview" won't work in the editor.
let node = util.xmlToDom(<span highlight="Preview">{substring}</span>,
document);
let start = this.caret;
@@ -1085,8 +1084,6 @@ function CommandLine() //{{{
}
else if (event.type == "input")
{
if (completions)
completions.previewClear();
this.resetCompletions();
liberator.triggerCallback("change", currentExtendedMode, command);
}
@@ -1445,7 +1442,10 @@ function CommandLine() //{{{
{
autocompleteTimer.reset();
if (completions)
completions.reset();
{
completions.wildIndex = -1;
completions.previewClear();
}
if (history)
history.reset();
}