No Description

rly 1.3KB

    #!/usr/bin/env coffee exec = require('child_process').exec readline = require 'readline' # Send something to nailgun and format the result. send_to_repl = (str) -> child = exec "/home/lu/t/vim/clojure/client/ng vimclojure.Nail Repl -r", (err, stdout, stderr) -> if(err) console.log err exit 1 answer = JSON.parse stdout process.stdout.write answer.stdout if answer.stderr isnt "" process.stderr.write answer.stderr rl.prompt() child.stdin.write str child.stdin.end() get_completion_for = (str, cb) -> relevant_match = str.match(/[a-zA-Z][a-zA-Z0-9\-\?]+$/) if relevant_match relevant = relevant_match[0] else cb null, [[], str] return exec "/home/lu/t/vim/clojure/client/ng vimclojure.Nail Complete --base #{relevant}", (err, stdout, stderr) -> if(err) console.log err exit 1 answer = JSON.parse stdout matches = (m.word for m in answer.value) cb null, [matches, str] is_balanced = (str) -> n = 0 for c in str n += 1 if c in "([\"" n -= 1 if c in ")]\"" n == 0 console.log "o'rly 0.x (clojure repl with a nailgun)" rl = readline.createInterface process.stdin, process.stdout, get_completion_for rl.setPrompt "> " rl.prompt() cmplt = "" rl.on 'line', (cmd) -> cmd = cmplt + cmd if is_balanced cmd send_to_repl cmd cmplt = "" else cmplt = cmd rl.write(" ")