Fix repl for Node 0.11.12.
Node changed their repl so that it inherits from readline.Interface. This means that `prompt` is now the rli function and not the original prompt string. This may be a little hacky, but I figure it would give someone a start if they want to do a better fix. The commit that changed this in Node is joyent/node@3ae0b17c76 This bug was mentioned in Issue #3395.
This commit is contained in:
parent
e02c8abb1a
commit
03705c674f
|
@ -41,14 +41,15 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
addMultilineHandler = function(repl) {
|
addMultilineHandler = function(repl) {
|
||||||
var inputStream, multiline, nodeLineListener, outputStream, rli;
|
var inputStream, multiline, nodeLineListener, origPrompt, outputStream, rli, _ref1;
|
||||||
rli = repl.rli, inputStream = repl.inputStream, outputStream = repl.outputStream;
|
rli = repl.rli, inputStream = repl.inputStream, outputStream = repl.outputStream;
|
||||||
|
origPrompt = (_ref1 = repl._prompt) != null ? _ref1 : repl.prompt;
|
||||||
multiline = {
|
multiline = {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
initialPrompt: repl.prompt.replace(/^[^> ]*/, function(x) {
|
initialPrompt: origPrompt.replace(/^[^> ]*/, function(x) {
|
||||||
return x.replace(/./g, '-');
|
return x.replace(/./g, '-');
|
||||||
}),
|
}),
|
||||||
prompt: repl.prompt.replace(/^[^> ]*>?/, function(x) {
|
prompt: origPrompt.replace(/^[^> ]*>?/, function(x) {
|
||||||
return x.replace(/./g, '.');
|
return x.replace(/./g, '.');
|
||||||
}),
|
}),
|
||||||
buffer: ''
|
buffer: ''
|
||||||
|
@ -61,6 +62,7 @@
|
||||||
rli.setPrompt(multiline.prompt);
|
rli.setPrompt(multiline.prompt);
|
||||||
rli.prompt(true);
|
rli.prompt(true);
|
||||||
} else {
|
} else {
|
||||||
|
rli.setPrompt(origPrompt);
|
||||||
nodeLineListener(cmd);
|
nodeLineListener(cmd);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -71,7 +73,7 @@
|
||||||
if (multiline.enabled) {
|
if (multiline.enabled) {
|
||||||
if (!multiline.buffer.match(/\n/)) {
|
if (!multiline.buffer.match(/\n/)) {
|
||||||
multiline.enabled = !multiline.enabled;
|
multiline.enabled = !multiline.enabled;
|
||||||
rli.setPrompt(repl.prompt);
|
rli.setPrompt(origPrompt);
|
||||||
rli.prompt(true);
|
rli.prompt(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,11 +39,13 @@ replDefaults =
|
||||||
|
|
||||||
addMultilineHandler = (repl) ->
|
addMultilineHandler = (repl) ->
|
||||||
{rli, inputStream, outputStream} = repl
|
{rli, inputStream, outputStream} = repl
|
||||||
|
# Node 0.11.12 changed API, prompt is now _prompt.
|
||||||
|
origPrompt = repl._prompt ? repl.prompt
|
||||||
|
|
||||||
multiline =
|
multiline =
|
||||||
enabled: off
|
enabled: off
|
||||||
initialPrompt: repl.prompt.replace /^[^> ]*/, (x) -> x.replace /./g, '-'
|
initialPrompt: origPrompt.replace /^[^> ]*/, (x) -> x.replace /./g, '-'
|
||||||
prompt: repl.prompt.replace /^[^> ]*>?/, (x) -> x.replace /./g, '.'
|
prompt: origPrompt.replace /^[^> ]*>?/, (x) -> x.replace /./g, '.'
|
||||||
buffer: ''
|
buffer: ''
|
||||||
|
|
||||||
# Proxy node's line listener
|
# Proxy node's line listener
|
||||||
|
@ -55,6 +57,7 @@ addMultilineHandler = (repl) ->
|
||||||
rli.setPrompt multiline.prompt
|
rli.setPrompt multiline.prompt
|
||||||
rli.prompt true
|
rli.prompt true
|
||||||
else
|
else
|
||||||
|
rli.setPrompt origPrompt
|
||||||
nodeLineListener cmd
|
nodeLineListener cmd
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -65,7 +68,7 @@ addMultilineHandler = (repl) ->
|
||||||
# allow arbitrarily switching between modes any time before multiple lines are entered
|
# allow arbitrarily switching between modes any time before multiple lines are entered
|
||||||
unless multiline.buffer.match /\n/
|
unless multiline.buffer.match /\n/
|
||||||
multiline.enabled = not multiline.enabled
|
multiline.enabled = not multiline.enabled
|
||||||
rli.setPrompt repl.prompt
|
rli.setPrompt origPrompt
|
||||||
rli.prompt true
|
rli.prompt true
|
||||||
return
|
return
|
||||||
# no-op unless the current line is empty
|
# no-op unless the current line is empty
|
||||||
|
|
Loading…
Reference in New Issue