Before LISPs Just Part of the Past ~#4 vim as a clojure front end ~
Upcoming SlideShare
Loading in...5
×
 

Before LISPs Just Part of the Past ~#4 vim as a clojure front end ~

on

  • 4,010 views

A report about vim plugins for clojurians.

A report about vim plugins for clojurians.

Statistics

Views

Total Views
4,010
Views on SlideShare
648
Embed Views
3,362

Actions

Likes
0
Downloads
1
Comments
0

4 Embeds 3,362

http://shibuya.lisp-users.org 3276
http://127.0.0.1 74
http://localhost 11
https://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Before LISPs Just Part of the Past ~#4 vim as a clojure front end ~ Before LISPs Just Part of the Past ~#4 vim as a clojure front end ~ Presentation Transcript

  • BeforeLISPsJust Part of the Past〜 #4 vim as a Clojure front end 〜
  • プログラミングClojure第2版!
  • Lisp Meet Up #6Clojure!!
  • プログラミング Clojure第2版でたしWe Vimmers needVim as aClojurefront end!!
  • Vim as a Clojure front end● Send whole buffer to interpreter● slime.vim - screen -X stuff● slimv - a SWANK client for vim● VimClojure - Clojure IDE for Vim● fireplace.vim - nREPL client for Vim
  • Vim as a Clojure front end● Send whole buffer to interpreter● slime.vim - screen -X stuff● slimv - a SWANK client for vim● VimClojure - Clojure IDE for Vim● fireplace.vim - nREPL client for Vim#1 〜 vim as a Lisp front end 〜を参照
  • Before Vimming with Clojure ...● Leiningen– project manager for Clojure– 1.x vs 2.x● NeoBundle– package manager for Vim
  • Leiningen● version 1.xと2.xで全然違い、Web上の情報は1.xが圧倒的に多い– lein plugin (1.x) vs profiles clause (2.x)– 1.xは1.4以降のClojureを使うのに手間取る● 以下のように公式Githubからスクリプトを入手して実行すれば、2.xが簡単に入る– cd ~/bin # binにPATHが通っていると仮定– curl -O https://raw.github.com/technomancy/leiningen/stable/bin/lein– chmod 755 lein– ./lein– 2013/06/27現在、Leinigen 2.2.0、Clojure 1.5.1が入る
  • Leiningen● lein repl● lein new foo● lein deps– 依存関係はproject.cljや~/.lein/profiles.cljに記述する– これの書き方も1.xと2.xで全然違う
  • NeoBundle● Vim plugin用のパッケージマネージャ– 作者が日本人(Shougoさん)なので日本語情報が見つけやすい、と思う– pathogen, Vundle● インストール:下記のポストが大変参考になります– http://qiita.com/hrsh7th@github/items/766543bd2ef565bd1ee9● .vimrcに管理対象をベタ書きする– これは個人的に落ち着かないので、managed-packages.vimにまとめて書いて、~/.vimrcでsourceしてます– i.e.) source $HOME/.vim/bundle/managed-packages.vim
  • VimClojure● Programming Clojure 2ndでも名前が挙がっているVim用のClojure開発環境– indent– syntax highlight– code completion– REPL (requires Nailgun & Nailgun client)● Webの情報はインストールにLeiningenを使う物がほとんどで、1.xが前提● 下記のポストで紹介されているやり方は2.xでも大丈夫– http://naleid.com/blog/2011/12/19/getting-a-clojure-repl-in-vim-with-vimclojure-nailgun-and-leiningen/– ただし、Leiningenは必要
  • Setup VimClojure● slimvを利用している場合はまずClojureソースでslimvをオフにする– let g:slimv_disable_clojure = 1● NeoBundleを用いてVimClojureをインストール– managed-packages.vimにNeoBundle vim-scripts/VimClojure.git– vimを起動して:NeoBundleInstall● VimClojure用Nailgunクライアントをインストール– hg clone https://bitbucket.org/kotarak/vimclojure– cd vimclojure/client– make– cp ng ~/bin/
  • Setup VimClojure (cont)● Nailgunサーバを手動でインストール– http://clojars.org/repo/vimclojure/server/ から最新版のjarを取ってきて~/lib/vimclojure/に配置– ここではserver-2.3.6.jarと仮定● .bashrcに以下の内容を追加– export VIMCLOJURE_SERVER_JAR="$HOME/lib/vimclojure/server-2.3.6.jar"● Nailgun起動用スクリプトを作成– ~/bin/ng-serverを以下の内容で作成し、実行可能にする– #! /bin/bashLEIN_CLASSPATH=$(lein classpath)NG_CLASSPATH="$VIMCLOJURE_SERVER_JAR:$LEIN_CLASSPATH:$CLASSPATH"java -server -cp "$NG_CLASSPATH" vimclojure.nailgun.NGServer● .vimrcに以下の内容を追加– let vimclojure#WantNailgun = 1– let vimclojure#NailgunClient = $HOME . /bin/ng– let g:vimclojure#HighlightBuiltins = 1
  • with VimClojure● lein new foo● cd foo● ng-server● vim src/foo/scratch.clj– ターミナル2つ立ち上げるか、screen(など)を使う
  • Key bindings● et : EvalTopLevel● eb : EvalBlock (選択範囲の評価)● ef : EvalFile● m1 : macroexpand-1● sr : REPLバッファ● C-x C-o : オムニ補完、REPLバッファのみ?● slimvに慣れているので2ストロークを定義してみた– au Filetype clojure nmap <LocalLeader>d <Plug>ClojureEvalToplevel.– au Filetype clojure vmap <LocalLeader>r <Plug>ClojureEvalBlock.– au Filetype clojure nmap <LocalLeader>b <Plug>ClojureEvalFile.– au Filetype clojure nmap <LocalLeader>1 <Plug>ClojureMacroExpand1.
  • fireplace● Vim用nREPLクライアント– 対話環境と補完を提供する● ただし、従来のREPLバッファのように、REPLバッファを編集することはできない– indentやsyntax highlightは提供しない● vim-clojure-staticを使うといいらしい● VimClojureの作者Meikel氏が「これからはfireplaceじゃないかな」と言ってたりする– On the state of VimClojurehttps://groups.google.com/forum/?fromgroups=#!topic/vimclojure/B-UU8qctd5A● インストールが素晴らしく簡単
  • Setup fireplace● NeoBundleでインストール– NeoBundle git://github.com/tpope/vim-fireplace.git– :NeoBundleInstall● プロジェクトディレクトリで、– lein repl– vim src/foo/scratch.clj– ターミナルを2つ立ち上げるか、screen(など)
  • Key bindings● cpp : 式の評価● cqp : Quasi-REPLを開く● cqc : 入力履歴付きQuasi-REPLを開く– command-line-window● c!! : 式を評価して、評価結果で置き換える– これはすごく面白い● トップレベルフォームの評価をするキーバインドはデフォルトでは定義されていない– :Evalコマンドがこれに相当するので、適当にmapしよう● C-x C-o : オムニ補完、引数リストも一緒に表示してくれる
  • Quasi-REPL● 入出力履歴の表示を取り去った感じのREPLバッファ● プロンプトは表示されるが、うっかり削除してしまうことはない● これまでの入出力内容もうっかり編集してしまうことはない● 入力履歴は表示させられるし、使うこともできる● 過去の出力も表示させることはできる– 入力エリアとは違う場所に表示される– :Last, :lprevious, :lnext
  • slimv.vim● Vim用SWANKクライアント● swank-clojureプロジェクトは既にdeprecated– 後継がnREPL● Leiningen 2.xではインストールがうまくいかず、調査を断念– 情報求ム● 公式には、Leiningen 1.xでインストールすることを推奨している
  • 補足● 今回の手順は、– Linux Mint 14 Xfce– Mac OS 10.8.4で動作を確認した● MacではbrewでインストールしたLeiningenでも特に問題は起きなかった