@ -49,9 +49,7 @@ function Interface(input, output, completer, terminal) {
}
historySize = historySize || kHistorySize ;
completer = completer || function ( ) { return [ ] ; } ;
if ( typeof completer !== 'function' ) {
if ( completer && typeof completer !== 'function' ) {
throw new TypeError ( 'Argument \'completer\' must be a function' ) ;
}
@ -74,9 +72,11 @@ function Interface(input, output, completer, terminal) {
this . historySize = historySize ;
// Check arity, 2 - for async, 1 for sync
this . completer = completer . length === 2 ? completer : function ( v , callback ) {
callback ( null , completer ( v ) ) ;
} ;
if ( typeof completer === 'function' ) {
this . completer = completer . length === 2 ? completer : function ( v , cb ) {
cb ( null , completer ( v ) ) ;
} ;
}
this . setPrompt ( '> ' ) ;
@ -346,9 +346,6 @@ Interface.prototype._normalWrite = function(b) {
} ;
Interface . prototype . _ insertString = function ( c ) {
//BUG: Problem when adding tabs with following content.
// Perhaps the bug is in _refreshLine(). Not sure.
// A hack would be to insert spaces instead of literal '\t'.
if ( this . cursor < this . line . length ) {
var beg = this . line . slice ( 0 , this . cursor ) ;
var end = this . line . slice ( this . cursor , this . line . length ) ;
@ -841,10 +838,6 @@ Interface.prototype._ttyWrite = function(s, key) {
this . _ deleteRight ( ) ;
break ;
case 'tab' : // tab completion
this . _ tabComplete ( ) ;
break ;
case 'left' :
this . _ moveCursor ( - 1 ) ;
break ;
@ -869,6 +862,14 @@ Interface.prototype._ttyWrite = function(s, key) {
this . _ historyNext ( ) ;
break ;
case 'tab' :
// If tab completion enabled, do that...
if ( typeof this . completer === 'function' ) {
this . _ tabComplete ( ) ;
break ;
}
// falls through
default :
if ( s instanceof Buffer )
s = s . toString ( 'utf-8' ) ;