gosh-mode.el
前もちょっと書いたんですけど、こつこつと書き溜めてたものを紹介します。
gosh-mode に関するものであれば、どんなコメントも歓迎します!
gosh-mode は Emacs 上で動く scheme-mode の拡張 major-mode です。
scheme-complete.el や gauche-mode.el などを参考に Gauche に特化して拡張しています。
Emacs Lisp と似たような操作で Gauche スクリプトを書けるようにすることを目標としています。
主に Debian Emacs 23 - 24 で動作確認していますが、Emacsc 22 以上であれば、Windows の NTEmacs, Meadow で、cygwin, mingw を問わず動作すると思います。
ダウンロード
GitHub - mhayashi1120/Emacs-gosh-mode: Gauche editing extensions for Emacs scheme-mode github でソースを公開しています。
auto-complete
無くても動作しますが、あるともっと便利になるかもしれません。下記を参照してください。
http://cx4a.org/software/auto-complete/index.ja.html
設定
多くの場合は .emacs に
(require 'gosh-config)
と書いておくだけで動作します。自動的にお勧めの設定で gosh-mode が有効になります。
設定が必要な場合は
(require 'gosh-mode)
として gosh-config.el を参考に好きな設定をしてください。
gosh に PATH が通っていない場合は M-x customize するか、以下のように .emacs に記述してください。
(gosh-default-initialize "/path/to/gosh")
以下では (require 'gosh-config) した場合を例にとり解説します。
概要
flymake のようにリアルタイムでソースの解析を行います。load すらできない、というのは防止できるのではないかと思います。
エラー情報を確認するためには mode-line の Invalid の文字にマウスカーソルを合わせてください。*2
動作
scheme-mode を継承しているので、基本的な操作は変わりませんが、いくつかの拡張を行っています。
C-x C-e
Emacs Lisp のようにカーソル直前の S 式の簡易な評価 + 結果の表示ができます。
カーソル位置の module context を判別して、スクリプトの置いてあるディレクトリに移動してから評価します。
top level にしか書けない S 式は評価できません。また編集中のファイルが load すらできない状態の場合も評価に失敗します。
M-:
Emacs Lisp のように入力した S 式の簡易な評価 + 結果の表示ができます。
その他は C-x C-e と同様です。
C-c C-j
定義位置をできるだけ探してジャンプします。
C-c ?
info を検索して表示します。
M-C-i
現在 import, use している情報から補完を行います。
C-c C-r
シンボルの名前変更を補助します。
参照を完全に解決できるわけではないので、注意して使用してください。
M-x gosh-run
M-x run-scheme とほぼ同じですが gauche 限定です。
M-C-i による completion 機能や auto-complete が使えます。
C-i では正確な情報源による補完ができます。
TODO
ソースが汚い。
流用が多く gauche 仕様に対する正確さが足りない。
scheme 解析は elisp を使わないで、できるだけ gauche のスクリプトに任せるようにしたいところ。
使っていないローカル変数のチェック、unbound variable のチェック、エラー箇所の表示がしたい。