diff --git a/lib/index.js b/lib/index.js index 8a11a51..cd87e77 100644 --- a/lib/index.js +++ b/lib/index.js @@ -39,24 +39,26 @@ exports.extend = function(obj) { , _tmpfile = path.join(_tmpdir, 'node-repl-' + process.pid + '.js') obj.edit = function(editor) { - editor = editor || process.ENV['EDITOR'] + editor = editor || process.ENV['VISUAL'] || process.ENV['EDITOR'] // TODO seed the file with _repl.context._ if the file doesn't exist yet pausingRepl(function(unpause) { var fds = [process.openStdin(), process.stdout, process.stdout] , args = [_tmpfile] // handle things like 'mate -w' and 'emacsclient --server-file ' if (editor.match(/\s/)) { - var words = editor.split(/\s+/) + var words = editor.split(/\s+/) // FIXME this should do proper word splitting ... args = words.slice(1).concat(args) editor = words[0] } spawn(editor, args, {customFds: fds}).on('exit', function(code) { - // FIXME figure out why obj.run doesn't work properly here (output is skewed) - if (code === 0) { - runFile(_tmpfile, function() { unpause() }) - } else { - unpause() - } + // some editors change the terminal resulting in skewed output, clean up + spawn('reset').on('exit', function(_) { + if (code === 0) { + runFile(_tmpfile, function() { unpause() }) + } else { + unpause() + } + }) }) }) } @@ -68,7 +70,7 @@ exports.extend = function(obj) { } obj.setEditor = function(editor) { - process.ENV['EDITOR'] = editor + process.ENV['VISUAL'] = editor } obj.stash = function(dest) {