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

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

This commit is contained in:
Kris Maglione
2009-02-05 10:09:07 -05:00
8 changed files with 87 additions and 104 deletions

View File

@@ -573,7 +573,7 @@ function Commands() //{{{
count++; // to compensate the "=" character
}
else if (!/\s/.test(sep)) // this isn't really an option as it has trailing characters, parse it as an argument
else if (!/\s/.test(sep) && sep != undefined) // this isn't really an option as it has trailing characters, parse it as an argument
{
invalid = true;
}

View File

@@ -399,87 +399,51 @@ function Hints() //{{{
let wordSplitRegex = RegExp(options["wordseparators"]);
// What the **** does this do? --Kris
//
// This function matches hintStrings like 'hekho' to links like 'Hey Kris, how are you?' -> [HE]y [K]ris [HO]w are you --Daniel
function charsAtBeginningOfWords(chars, words, allowWordOverleaping)
{
let charIdx = 0;
let numMatchedWords = 0;
for (let [,word] in Iterator(words))
function charMatches(charIdx, chars, wordIdx, words, inWordIdx, allowWordOverleaping)
{
if (word.length == 0)
continue;
let wcIdx = 0;
// Check if the current word matches same characters as the previous word.
// Each already matched word has matched at least one character.
if (charIdx > numMatchedWords)
let matches = (chars[charIdx] == words[wordIdx][inWordIdx]);
if ((matches == false && allowWordOverleaping) || words[wordIdx].length == 0)
{
let matchingStarted = false;
for (let i in util.range(numMatchedWords, charIdx))
{
if (chars[i] == word[wcIdx])
{
matchingStarted = true;
wcIdx++;
}
else if (matchingStarted)
{
wcIdx = 0;
break;
}
}
let nextWordIdx = wordIdx + 1;
if (nextWordIdx == words.length)
return false;
return charMatches(charIdx, chars, nextWordIdx, words, 0, allowWordOverleaping);
}
// the current word matches same characters as the previous word
let prevCharIdx;
if (wcIdx > 0)
if (matches)
{
prevCharIdx = charIdx;
// now check if it matches additional characters
for (; wcIdx < word.length && charIdx < chars.length; wcIdx++, charIdx++)
{
if (word[wcIdx] != chars[charIdx])
break;
}
let nextCharIdx = charIdx + 1;
if (nextCharIdx == chars.length)
return true;
// the word doesn't match additional characters, now check if the
// already matched characters are equal to the next characters for matching,
// if yes, then consume them
if (prevCharIdx == charIdx)
{
for (let i = 0; i < wcIdx && charIdx < chars.length; i++, charIdx++)
{
if (word[i] != chars[charIdx])
break;
}
}
let nextWordIdx = wordIdx + 1;
let beyondLastWord = (nextWordIdx == words.length);
let charMatched = false;
if (beyondLastWord == false)
charMatched = charMatches(nextCharIdx, chars, nextWordIdx, words, 0, allowWordOverleaping)
numMatchedWords++;
}
// the current word doesn't match same characters as the previous word, just
// try to match the next characters
else
{
prevCharIdx = charIdx;
for (let i = 0; i < word.length && charIdx < chars.length; i++, charIdx++)
{
if (word[i] != chars[charIdx])
break;
}
if (charMatched)
return true;
if (prevCharIdx == charIdx)
if (charMatched == false || beyondLastWord == true)
{
if (!allowWordOverleaping)
let nextInWordIdx = inWordIdx + 1;
if (nextInWordIdx == words[wordIdx].length)
return false;
return charMatches(nextCharIdx, chars, wordIdx, words, nextInWordIdx, allowWordOverleaping);
}
else
numMatchedWords++;
}
if (charIdx == chars.length)
return true;
return false;
}
return (charIdx == chars.length);
return charMatches(0, chars, 0, words, 0, allowWordOverleaping);
}
function stringsAtBeginningOfWords(strings, words, allowWordOverleaping)

View File

@@ -1274,7 +1274,8 @@ function CommandLine() //{{{
}
else if (event.type == "input")
{
//this.resetCompletions(); -> already handled by "keypress" below (hopefully), so don't do it twice
//liberator.dump("input: " + command);
this.resetCompletions();
liberator.triggerCallback("change", currentExtendedMode, command);
}
else if (event.type == "keypress")
@@ -1322,7 +1323,7 @@ function CommandLine() //{{{
else if (key == "<BS>")
{
// reset the tab completion
this.resetCompletions();
//this.resetCompletions();
// and blur the command line if there is no text left
if (command.length == 0)
@@ -1333,7 +1334,7 @@ function CommandLine() //{{{
}
else // any other key
{
this.resetCompletions();
//this.resetCompletions();
}
return true; // allow this event to be handled by Firefox
}
@@ -1758,7 +1759,7 @@ function ItemList(id) //{{{
</div>
</div>, divNodes);
doc.body.replaceChild(div, doc.body.firstChild);
div.scrollIntoView(true);
//div.scrollIntoView(true);
items.contextList.forEach(function init_eachContext(context) {
delete context.cache.nodes;
@@ -1941,7 +1942,7 @@ function ItemList(id) //{{{
if (index >= 0)
{
getCompletion(index).setAttribute("selected", "true");
getCompletion(index).scrollIntoView(false);
//getCompletion(index).scrollIntoView(false);
}
//if (index == 0)