jigen studylog » gauche

jigen, Hirotomo Kunimatsu
Tokyo, Japan
mailto: microformat hcard
Page 1 of 212
top

先日のvimとgaucheの連携をちょっと改良

先日のvimとgaucheの連携をちょっと改良先日、「vimのgaucheの出力をウィンドウ分割して表示」というエントリーで、vimgaucheでの開発をする時の事とか書いたけど、ちょっとした事に気が付いた。

先日の形だとインタラクティブモード(gosh -i)の設定が意味をなしてないので、毎回式が評価されるように(表現あってる?)してみた。

いや、単純にgoshを起動する時にファイル名を渡すのではなくてパイプ(リダイレクション)で渡すようにしただけなんすけどね。修正したのを一応再掲。

今度はヴィジュアルモードで選択した部分の評価を表示させたいなぁ。チト調べてみよう。

fun! GoshRunAll()
  " とりあえず保存をする。あと現在のファイル名を保存しておく
  w%
  let fname = expand("%")

  " 5行のバッファを「gosh_out」という名前でウィンドウの下に作る
  below 5new gosh_out

  " 前の出力があるかも知れんので削除する
  execute ":0,%delete"

  " goshを起動する。pathは設定してない。(!!!ここを直した)
  execute "r !gosh -i <".fname

  " 出力結果を保存しておく
  w /path/to/gosh_out

endfun

nmap <c-s> :call GoshRunAll()<cr>

2008/04/25 16:35:19200816:35

vimのgaucheの出力をウィンドウ分割して表示

vimのgaucheの出力をウィンドウ分割して表示地味ーにschemeやってます。全然身になってないですが><。こういうのは諦め悪くやるのが良いかなっと。

最近「プログラミングGauche」も買い風呂場とかでチマチマ読んでます。ところで、やっぱりエディタはEmacsとの相性が良いらしくて、読んでるだけで便利そうで「schemeを効率よく勉強するのはEmacsやるのがいいのかなぁ?」とか思って、何回か試してみるんですがvimに慣れているものでどうもダメだ。

しかも、Emacsに慣れてしまうとvimを使った時にEmacsのキーを連打してしまう。んじゃ、vimでどこまでイケるかやってみようかという経過をメモ代わりにエントリー。

カラースキームとかは適当

まだ、schemeを理解してないってのもあるんだけど、カラースキームとかにはあんまり不満がないのでデフォルトで入ってるschemeのカラースキームでOK(オイ)。他に以下のような物があるらしいです。慣れてきたらインストールしてみようと思う。

こっから本題

んで、結局何をしたいかと言うと、goshの結果を新しいウィンドウ(バッファ)に出力を表示したいって事です。以下のような、MzSchemeのインターフェースを追加する方法を書いている方がいたのだけど、やりたいのはgaucheの結果を取りたいのだ。(あと、vimのコンパイルとか面倒だった。)

多分、普通は以下リンクのように「:!gosh %」とか外部コマンド扱いで現在編集しているファイルをgoshに送るというのが普通なのかも知れないけど、Emacsみたいにショートカット一発でバッファに出したいなぁと。出力が長いと見れなくなるし、あとカーソル移動とかもできないので結果のコピペとかも面倒。

例えば、「プログラミングGauche」の中にあるデバッグコード出力する例にすると。

(define (fact n)
  (if (= n 0)
    1
    (* n #?=(fact (-n 1)))))

↑こんなのを普通に「:!gosh %」するとこんな感じになる↓。あ、ちなみに「%」は現在編集しているファイルのパスを入れるって事らしいです。

goshをvimから起動すると

実行すると…。

表示されるけど…

vimスクリプトをゴニョゴニョしてみた

なので、vimスクリプトでどうにかなるかなっと、書いた事もないvimスクリプトをいじってみた。

fun! GoshRunAll()
  " とりあえず保存をする。あと現在のファイル名を保存しておく
  w%
  let fname = expand("%")

  " 5行のバッファを「gosh_out」という名前でウィンドウの下に作る
  below 5new gosh_out

  " 前の出力があるかも知れんので削除する
  execute ":0,%delete"

  " goshを起動する。pathは設定してない。
  execute "r !gosh -i ".fname

  " 出力結果を保存しておく
  w /path/to/gosh_out

endfun

nmap <c-s> :call GoshRunAll()<cr>

これをschemeファイルを編集する時に読み込まれるvimスクリプトに入れておく、syntaxとかftpluginあたりの奴に入れたらいいと思う。今回はCtrl-Sキーでgoshに送り込むように設定しておいた。んで、実際Ctrl-Sで起動してみる。

分割して表示されるよ!

無事出来るようになった。便利!

不満+今後

多分、もっとスマートな方法があるんだろうけど自分的にはこれで十分満足。ただ気になるのはEmacsと違って、スクラッチバッファ的な物がないので(俺が知らないだけかもだけど)、ファイルのような処理にしなければならないのがちとイマイチ。

後は、ヴィジュアルモードで選択した場所だけをgoshに送って評価とかしたいな・・・vimscriptやろうかなぁ・・・。うーん。誰かプラグインとか配布してないのかしらん。

プログラミングGauche


2008/04/18 16:39:04200816:39

goshではledit使う

goshではledit使うjijixi’s diary経由。gosh立ち上げて色々schemeの練習・勉強をちょぼちょぼしてるんですが、BackSpace効かないとかちょいとイライラしてて見つけたもの。

% ledit gosh -i

leditをインストールして、上記のコマンドでgosh立ち上げると編集が色々簡単になってヨサゲなので( ..)φメモメモ。readlineみたいなもんかしらん。

leditはocamlで作られているらしく、aptとかだと簡単に入れられるけど他だと試していないけど大変かも知れない。公式はココみたいです→/var/www/public_html/xs4all/treasure/ledit
ledit

↑leditの新しい公式サイト教えてもらいました!(keita.yamaguchiさん。thanks!)


2007/11/16 16:12:54200716:12
Page 1 of 212
ネズミ「ここからメニューだすよ」
ネズミ「ごちそういっぱーい」
ネズミ「腹へったー」
ネズミ「働けー働けー♪」