How to launch editor like vi or emacs from node.js REPL?

I want to launch an editor like vi or emacs from node.js REPL.

I have tried two approaches till now:

  1. Node Addons

    Heres how my editor.cc looks like:

    const char *tempFile = "TEMP_FILE"; // File to be opened with the editor
    
    Handle<Value> launchEditor (const Arguments& args) {
        const char *editor = "vi";
        Local<String> buffer;
    
        pid_t pid = fork();
        if (pid == 0) {
            execlp(editor, editor, tempFile, NULL);
    
            // Exit with "command-not-found" if above fails.
            exit(127);
        } else {
            waitpid(pid, 0, 0);
            char *fileContent = readTempFile(); // Simple file IO code to read file.
            buffer = String::New(fileContent);
            free(fileContent);
        }
        return buffer;
    }
    
    
    // MAKE IT A NODE MODULE
    
    void Init(Handle<Object> target) {
        target->Set(String::NewSymbol("editor"), FunctionTemplate::New(launchEditor)->GetFunction());
    }
    
    NODE_MODULE(editor, Init)
    

    This worked when I had node v0.6.12 (compiled with node-waf), but when I updated node to v0.8.1, this code stopped working (compiled with node-gyp). The editor simply didn't appear, and the file content was read and returned (with emacs) or the editor was running as a background process (with vi)! Is there anything that I need to change for it to work with 0.8.1?

    Even if the editor is launched as background process, can I bring it to foreground from the code itself?

  2. Child_process module

    spawn = require('child_process').spawn;
    editor = spawn('emacs', ['TEMP_FILE']);
    

    But this is not working properly. With emacs, it shows the error input is not a tty and vi gives a weird interface.

Can someone help with any of the solutions above, or suggest some other working solution?

I just stumbled upon one about a week ago, you should give it a try: node-editor