mattn/vdbi-vim - GitHub最近clojureに興味はあるんだけど、一向にclojure力があがらないので、勉強がてらVDBIのサーバとおしゃべりしてみた。
Database client for Vim
https://github.com/mattn/vdbi-vim
使ったのは clj-rpc というJSONRPCライブラリ。
zhuangxm/clj-rpc - GitHub最初、エンドポイント指定時に
a simple web rpc using clojure and json protocol
https://github.com/zhuangxm/clj-rpc
:on-wite
を json
に指定しないとデフォルトで clj プロトコル(通信データがJSONじゃなくclojureのコード)になるという罠にどっぷりハマってしまったけど、なんとか動いた。
(ns vdbi-demo
(:require [clj-rpc.client :as client]))
(def endp (client/rpc-endpoint :server "localhost" :port 9876 :on-wire "json"))
(client/invoke-rpc endp "connect" ["dbi:SQLite:dbname=c:/temp/foo.db" "" ""])
(client/invoke-rpc endp "prepare" ["select * from foo"])
(client/invoke-rpc endp "execute" [])
(let [rows (client/invoke-rpc endp "fetch" [-1])]
(reduce (fn [rows row]
(reduce (fn [cols col]
(print (str col ","))), {}, row)
(println)), {}, rows))
1,あいう,
2,かきく,
3,psgix.harakiri,
ちなみにこの clj-rpc は :on-wire
をURLのおケツに引っ付けてしまうので、物によっては動かないサーバもあるかも。あと vimclojure をいれて
let vimclojure#FuzzyIndent=1
let vimclojure#HighlightBuiltins=1
let vimclojure#HighlightContrib=1
let vimclojure#DynamicHighlighting=1
let vimclojure#ParenRainbow=1
という設定をvimrcに書いておくとコードが七色になるのでいれるべし。