mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-23 16:42:26 +01:00
Make completion display less jittery.
This commit is contained in:
@@ -832,40 +832,37 @@ liberator.Completion = function () //{{{
|
||||
// if "tail" is true, only return names without any directory components
|
||||
file: function (filter, tail)
|
||||
{
|
||||
var dir = "", compl = "";
|
||||
var matches = filter.match(/^(.*[\/\\])?(.*?)$/);
|
||||
let [matches, dir, compl] = filter.match(/^((?:.*[\/\\])?)(.*?)$/);
|
||||
// dir == "" is expanded inside readDirectory to the current dir
|
||||
|
||||
if (matches)
|
||||
let generate = function ()
|
||||
{
|
||||
dir = matches[1] || ""; // "" is expanded inside readDirectory to the current dir
|
||||
compl = matches[2] || "";
|
||||
}
|
||||
var files = [], mapped = [];
|
||||
|
||||
var files = [], mapped = [];
|
||||
|
||||
try
|
||||
{
|
||||
files = liberator.io.readDirectory(dir, true);
|
||||
|
||||
if (liberator.options["wildignore"])
|
||||
try
|
||||
{
|
||||
var wigRegexp = new RegExp("(^" + liberator.options["wildignore"].replace(",", "|", "g") + ")$");
|
||||
files = liberator.io.readDirectory(dir, true);
|
||||
|
||||
files = files.filter(function (f) f.isDirectory() || !wigRegexp.test(f.leafName))
|
||||
if (liberator.options["wildignore"])
|
||||
{
|
||||
var wigRegexp = new RegExp("(^" + liberator.options["wildignore"].replace(",", "|", "g") + ")$");
|
||||
|
||||
files = files.filter(function (f) f.isDirectory() || !wigRegexp.test(f.leafName))
|
||||
}
|
||||
|
||||
mapped = files.map(function (file) [tail ? file.leafName : (dir + file.leafName),
|
||||
file.isDirectory() ? "Directory" : "File"]);
|
||||
}
|
||||
catch (e) {}
|
||||
return mapped;
|
||||
};
|
||||
|
||||
mapped = files.map(function (file) [tail ? file.leafName : (dir + file.leafName),
|
||||
file.isDirectory() ? "Directory" : "File"]);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
return [0, []];
|
||||
}
|
||||
|
||||
try {
|
||||
if (tail)
|
||||
return [dir.length, buildLongestStartingSubstring(mapped, compl, true)];
|
||||
return [dir.length, this.cached("file-" + dir, compl, generate, "filter", [true])];
|
||||
else
|
||||
return [0, buildLongestStartingSubstring(mapped, filter, true)];
|
||||
return [0, this.cached("file", filter, generate, "filter", [true])];
|
||||
}catch(e){liberator.dump(e)}
|
||||
},
|
||||
|
||||
help: function (filter)
|
||||
|
||||
@@ -1226,6 +1226,7 @@ liberator.ItemList = function (id) //{{{
|
||||
var container = iframe.parentNode;
|
||||
|
||||
doc.body.id = id + "-content";
|
||||
doc.body.appendChild(doc.createTextNode(""));
|
||||
|
||||
var completions = []; // a reference to the Array of completions
|
||||
var startIndex = -1; // The index of the first displayed item
|
||||
@@ -1316,7 +1317,6 @@ liberator.ItemList = function (id) //{{{
|
||||
}
|
||||
|
||||
// do a full refill of the list:
|
||||
doc.body.innerHTML = "";
|
||||
|
||||
XML.ignoreWhitespace = true;
|
||||
let div = <div class="ex-command-output hl-Normal">
|
||||
@@ -1326,10 +1326,8 @@ liberator.ItemList = function (id) //{{{
|
||||
|
||||
let tbody = div..tbody;
|
||||
for (let i in liberator.util.range(offset, endIndex))
|
||||
{
|
||||
let elem = completions[i];
|
||||
tbody.* += createRow(elem[0], elem[1], elem[2]);
|
||||
}
|
||||
tbody.* += createRow.apply(null, completions[i]);
|
||||
|
||||
div.* +=
|
||||
<table>
|
||||
{
|
||||
@@ -1341,7 +1339,7 @@ liberator.ItemList = function (id) //{{{
|
||||
let dom = liberator.util.xmlToDom(div, doc);
|
||||
completionBody = dom.getElementsByTagName("tbody")[0];
|
||||
completionElements = completionBody.childNodes;
|
||||
doc.body.appendChild(dom);
|
||||
doc.body.replaceChild(dom, doc.body.firstChild);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////}}}
|
||||
|
||||
Reference in New Issue
Block a user