--- /dev/null
+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;
+ var args = editor.split(/\s+/);
+ var bin = args.shift();
+
+ var ps = spawn(bin, args.concat([ file ]), { stdio: 'inherit' });
+
+ ps.on('exit', function (code, sig) {
+ if (typeof cb === 'function') cb(code, sig)
+ });
+};