すいません、最近更新できてません。
以下のリンクのがオススメ。
scheme.vim
vim用の、gauche対応のシンタックスファイル。
gaucheの標準モジュールの束縛全てのインデント/カラーリングに対応。
使う際には、下の方の「概要」のところを見て、is_gauche変数をセットしてください。
ダウンロード
リポジトリ
history
- Gauche-0.9.1対応(2011/01/12 09:27:18 JST)
- リポジトリ及び配布サーバ変更
- 色々と問題が発覚したので対応(2009/11/27 09:01:39 JST)
- 間違ってgauche.arrayを含め忘れていたようなので、入れて生成し直す
- 「.$」を間違って消していたのを復活させる
- 「+inf.0」「-inf.0」「+nan.0」が数値扱いされていないのを直す
- 手でnext-methodを追加(2009/11/26 22:04:16 JST)
- ベースにするscheme.vimをvim7.2付属のものにした際に、「'」「`」「,」をiskeywordから除外した修正が意図せずbackoutしてしまったので、再度適用し直した(2009/11/26 21:33:14 JST)
- srfi-62コメント内に括弧がネストしている時にカラーリングがおかしくなる問題を修正(2009/11/26 21:22:30 JST)
- Gauche-0.9対応その他 (2009/11/26 19:30:44 JST)
- Gauche-0.8.14対応 (2008/10/23 06:25:29 JST)
- Gauche-0.8.13対応 (2008/02/14 20:57:10 JST)
- (scheme.vim.tmplから、「'」「`」「,」をiskeywordから除外するようにした)(まだ「,@」には未対応)(scheme.vimはまだ未更新のまま) (2008/02/14 05:56:32 JST)
- Gauche-0.8.11対応 (2007/10/19 23:13:58 JST)
- #\lf等、リテラルの文字名を追加 (2005/11/28 00:41:46 JST)
- 一部のclassが抜けていたのを修正 (2005/11/26 23:03:18 JST)
- 最新のscheme.vimをベースにする/gaucheの正規表現に対応/rlgoshの.gosh_completionsから完全に新たに生成し直す/moduleやclassや一部の変数もシンタックス化 (2005/11/26 21:50:30 JST)
- softtabstop設定追加、リポジトリに保存 (2005/02/02 22:54:24 JST)
- syntaxから漏れていたelse, =>, caar〜cddddrに対応 (2005/01/13 20:39:22 JST)
- string-ci=?等、一部の関数がkeywordになっていなかったのを修正 (2005/01/04 04:32:59 JST)
- 0.8.3のtexiから再生成 (2004/12/23 11:24:53 JST)
- Macro, Generic Function, Methodも、lispwords扱いにした (2004/02/26 23:45:36 JST)
- Generic Function, Methodが抜けていたのを修正 (2004/02/22 04:02:47 JST)
- 0.7.4.1のtexiから再生成 (2004/02/14 15:23:47 JST)
概要
vimfiles/syntaxの中に入れて使う。
しかし、デフォルトでは、R5RSで定義されているものしか対応しない(vim標準のscheme.vimと同じ挙動)。
.vimrcの中に以下を記述する事で、gauche用シンタックスが有効になる。
autocmd FileType scheme :let is_gauche=1
- autocmdプラグインが動かない時は、諦めて以下のようにする。
let is_gauche=1
- 但し、結局FileTypeで判定しているので、MzScheme等と共存できない。そういう時は、手で:let is_mzscheme=1とかすればいいんだろうけど……それも微妙だ。解決方法はある?
自動インデントルール
基本的には、元からvimに付属していたバージョンのscheme.vimに準じる。
- 手続き
(procedure
arg1
arg2
arg3)
(procedure arg1
arg2
arg3)
- special form及びマクロ
(macro
arg1
arg2
arg3)
(macro arg1
arg2 ; 一行目に引数が書かれていても、二行目のインデントは常にここ
arg3)
(macro arg1 arg2
arg3)
TODO
- 「(m'after)」のような、空白無しにquoteを入れる記法を合法とする
- os.windowsモジュールの束縛にも対応する事
- 「+hoge-hoge+」形式の変数名に対応する(constant扱い)
- 普通に定義を追加したのでは、数値判定の方が優先されてしまって上手く扱えなかったので、とりあえずTODOとしておく
- gosh_completionsは、rlgoshのものではなく、igoshのものを使うようにしてみる
=- 「#o022」等、Gauche固有の#記法で、まだ対応していないものがあるので対応する事。具体的にどれが対応してないかのリストも作る事
- ctags風に動的に再生成できるようにしたい(特に、編集中のソースとかを)
- 自分はあまりやる気にならないので、誰かやる気のある方やってみませんか?
- http://d.hatena.ne.jp/secondlife/20051019/1129655473 のOmni completion対応
生成手順
バージョンが上がった際に自分で再生成したり、自作ライブラリの束縛のインデント/カラーリング等も組み込みたい場合は、以下の手順で自作すればよい。
- まず、gauche_modulesファイルとgosh_completionsファイルを生成する。
- 生成されたgauche_modulesファイルとgosh_completionsに加え、scheme.vim.tmplファイルを用意する。
- 前述の3ファイルとmake_scheme_vim.scmを使い、scheme.vimを生成する。
cat ./gosh_completions \
| gosh make_scheme_vim.scm ./gauche_modules ./scheme.vim.tmpl > scheme.vim
- https://github.com/ayamada/copy-of-svn.tir.jp/blob/master/nekoie/goshtags/make_scheme_vim.scm
- make_scheme_vim.scmは、以下のような動作を行う。
- gauche_modulesに記述してある全モジュールをuseする
- gosh_completionsに記述してある束縛を一つずつ検証し、その種別(module / syntax / macro / proc / method / class / charset / parameter)を判定し、それに相応しいvim設定を一つずつ行っていく
- 現在は、syntaxとmacroがschemeExtSyntax扱いかつlispwords扱いになり、それ以外は全てschemeExtFunc扱いにしている。この部分はもう少し練る余地はある。
- その結果を、scheme.vim.tmpl内にある「##gauche-define##」という文字列のある行と置換してから、stdoutに出力する
連絡
不具合、パッチ、その他連絡は↓に書いてください(要望もokですが、実装が大変だとスルーするかも)
最終更新 : 2012/05/17 20:00:45 JST