| var spawn = require('child_process').spawn; |
| |
| module.exports = function (file, opts, cb) { |
| if (typeof opts === 'function') { |
| cb = opts; |
| opts = {}; |
| } |
| if (!opts) opts = {}; |
| |
| var ed = /^win/.test(process.platform) ? 'notepad' : 'vim'; |
| var editor = opts.editor || process.env.VISUAL || process.env.EDITOR || ed; |
| |
| setRaw(true); |
| var ps = spawn(editor, [ file ], { customFds : [ 0, 1, 2 ] }); |
| |
| ps.on('exit', function (code, sig) { |
| setRaw(false); |
| process.stdin.pause(); |
| if (typeof cb === 'function') cb(code, sig) |
| }); |
| }; |
| |
| var tty = require('tty'); |
| function setRaw (mode) { |
| process.stdin.setRawMode ? process.stdin.setRawMode(mode) : tty.setRawMode(mode); |
| } |