@@ -49,7 +49,9 @@ function Interface(input, output, completer, terminal) {
4949 }
5050 historySize = historySize || kHistorySize ;
5151
52- if ( completer && typeof completer !== 'function' ) {
52+ completer = completer || function ( ) { return [ ] ; } ;
53+
54+ if ( typeof completer !== 'function' ) {
5355 throw new TypeError ( 'Argument \'completer\' must be a function' ) ;
5456 }
5557
@@ -72,11 +74,9 @@ function Interface(input, output, completer, terminal) {
7274 this . historySize = historySize ;
7375
7476 // Check arity, 2 - for async, 1 for sync
75- if ( typeof completer === 'function' ) {
76- this . completer = completer . length === 2 ? completer : function ( v , cb ) {
77- cb ( null , completer ( v ) ) ;
78- } ;
79- }
77+ this . completer = completer . length === 2 ? completer : function ( v , callback ) {
78+ callback ( null , completer ( v ) ) ;
79+ } ;
8080
8181 this . setPrompt ( '> ' ) ;
8282
@@ -346,6 +346,9 @@ Interface.prototype._normalWrite = function(b) {
346346} ;
347347
348348Interface . prototype . _insertString = function ( c ) {
349+ //BUG: Problem when adding tabs with following content.
350+ // Perhaps the bug is in _refreshLine(). Not sure.
351+ // A hack would be to insert spaces instead of literal '\t'.
349352 if ( this . cursor < this . line . length ) {
350353 var beg = this . line . slice ( 0 , this . cursor ) ;
351354 var end = this . line . slice ( this . cursor , this . line . length ) ;
@@ -838,6 +841,10 @@ Interface.prototype._ttyWrite = function(s, key) {
838841 this . _deleteRight ( ) ;
839842 break ;
840843
844+ case 'tab' : // tab completion
845+ this . _tabComplete ( ) ;
846+ break ;
847+
841848 case 'left' :
842849 this . _moveCursor ( - 1 ) ;
843850 break ;
@@ -862,14 +869,6 @@ Interface.prototype._ttyWrite = function(s, key) {
862869 this . _historyNext ( ) ;
863870 break ;
864871
865- case 'tab' :
866- // If tab completion enabled, do that...
867- if ( typeof this . completer === 'function' ) {
868- this . _tabComplete ( ) ;
869- break ;
870- }
871- // falls through
872-
873872 default :
874873 if ( s instanceof Buffer )
875874 s = s . toString ( 'utf-8' ) ;
0 commit comments