Update dispass_completer for new completers
Update `dispass_completer' for the latest Conkeror. Conkeror changed the API for the completers somewhat so the completions were broken.
This commit is contained in:
parent
6e73d17650
commit
b618a79a48
1 changed files with 36 additions and 31 deletions
67
cdispass.js
67
cdispass.js
|
@ -53,38 +53,43 @@ function dispass(label, password)
|
||||||
yield co_return(data);
|
yield co_return(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function dispass_complete(input, pos, conservative)
|
function dispass_completer()
|
||||||
{
|
{
|
||||||
if (pos == 0 && conservative)
|
keywords(arguments);
|
||||||
yield co_return(undefined);
|
completer.call(this, forward_keywords(arguments));
|
||||||
|
|
||||||
let str = input.substring(0, pos);
|
|
||||||
|
|
||||||
var data = "", error = "", ret = [];
|
|
||||||
var result = yield shell_command(
|
|
||||||
dispass_executable + " list --script",
|
|
||||||
$fds = [{ output: async_binary_string_writer("") },
|
|
||||||
{ input: async_binary_reader(
|
|
||||||
function (s) data += s || "" ) },
|
|
||||||
{ input: async_binary_reader(
|
|
||||||
function (s) error += s || "") }]);
|
|
||||||
|
|
||||||
if (result != 0 || error != "")
|
|
||||||
throw new Error("result: " + result + ", error: " + error);
|
|
||||||
else if (data != "") {
|
|
||||||
data.split('\n').forEach(function (row) {
|
|
||||||
let match = /(^.{50})/.exec(row);
|
|
||||||
if (match && (str == "" || match[1].contains(str)))
|
|
||||||
ret.push(match[1].trim());
|
|
||||||
});
|
|
||||||
|
|
||||||
let c = { count: ret.length,
|
|
||||||
get_string: function (i) ret[i],
|
|
||||||
get_description: function (i) "",
|
|
||||||
get_input_state: function (i) [ret[i]] };
|
|
||||||
yield co_return(c);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
dispass_completer.prototype = {
|
||||||
|
constructor: dispass_completer,
|
||||||
|
__proto__: completer.prototype,
|
||||||
|
toString: function () "#<dispass_completer>",
|
||||||
|
complete: function (input, pos) {
|
||||||
|
if (pos == 0)
|
||||||
|
yield co_return(undefined);
|
||||||
|
|
||||||
|
let str = input.substring(0, pos);
|
||||||
|
|
||||||
|
var data = "", error = "", ret = [];
|
||||||
|
var result = yield shell_command(
|
||||||
|
dispass_executable + " list --script",
|
||||||
|
$fds = [{ output: async_binary_string_writer("") },
|
||||||
|
{ input: async_binary_reader(
|
||||||
|
function (s) data += s || "" ) },
|
||||||
|
{ input: async_binary_reader(
|
||||||
|
function (s) error += s || "") }]);
|
||||||
|
|
||||||
|
if (result != 0 || error != "")
|
||||||
|
throw new Error("result: " + result + ", error: " + error);
|
||||||
|
else if (data != "") {
|
||||||
|
data.split('\n').forEach(function (row) {
|
||||||
|
let match = /(^.{50})/.exec(row);
|
||||||
|
if (match && (str == "" || match[1].contains(str)))
|
||||||
|
ret.push(match[1].trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
yield co_return(new completions(this, ret));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
function dispass_interactive(with_submit) {
|
function dispass_interactive(with_submit) {
|
||||||
return function (I) {
|
return function (I) {
|
||||||
|
@ -95,7 +100,7 @@ function dispass_interactive(with_submit) {
|
||||||
|
|
||||||
let label = yield I.minibuffer.read(
|
let label = yield I.minibuffer.read(
|
||||||
$prompt="label:", $auto_complete=true,
|
$prompt="label:", $auto_complete=true,
|
||||||
$completer=dispass_complete
|
$completer=new dispass_completer()
|
||||||
);
|
);
|
||||||
|
|
||||||
I.minibuffer.input_element.type = "password";
|
I.minibuffer.input_element.type = "password";
|
||||||
|
|
Loading…
Reference in a new issue