2016/01/13
OS X Yosemiteにswank-gaucheのインストール
きっかけはTwitter.
@wat_aro どの処理系使ってるかわからないですがgaucheのswank-gaucheみたいに対応されてたりしませんか?
— lispドラッグ常習者 (@rayfill) 2016, 1月 12
早速インストール. READMEに
- 設定方法
`dot.emacs'の内容を.emacsにコピーしてswank-gaucheへのパスの情報を設定します。 以下の二つの変数を設定してください。
swank-gauche-path: swank-gauche.scmが格納されているディレクトリへのパス
swank-gauche-gauche-source-path: Gaucheのソースを持っていて、かつ、コンパイル済の場合、ソースのトップディレク トリへのパスを設定して下さい。マニュアルに定義されているオペレータの 引数の名前がルックアップ出来るようになります。
とあるので
;; swank-gaucheを使うためのSLIME設定
;;
;;(push "<path-to-slime-dir>" load-path)
(require 'slime)
(slime-setup
'(slime-fancy
slime-scheme))
;; swank-gauche.scmが格納されているディレクトリへのパスを設定して下さい。
(setq swank-gauche-path "/usr/local/Cellar/swank-gauche-master")
;; Gaucheのソースを持っていて、かつ、コンパイル済の場合、ソースのトップ
;; ディレクトリへのパスを設定して下さい。Gaucheのマニュアルに記載されている
;; オペレータの引数名がルックアップ出来るようになります。
(setq swank-gauche-gauche-source-path "/usr/local/Cellar/gauche/Gauche")
(push swank-gauche-path load-path)
(require 'swank-gauche)
(setq slime-lisp-implementations
'((gauche ("gosh") :init gauche-init :coding-system utf-8-unix)))
;; バッファのモジュールを決定するための設定
(setq slime-find-buffer-package-function 'find-gauche-package)
;; c-p-c補完に設定
(setq slime-complete-symbol-function 'slime-complete-symbol*)
;; web上のGaucheリファレンスマニュアルを引く設定
(define-key slime-mode-map (kbd "C-c C-d H") 'gauche-ref-lookup)
って感じにコピペ&二箇所変数設定.
slimeは既に導入しているので<path-to slime-directory>は省略.
gaucheのソースはどこにおけばいいのかわからなかったので/usr/local/Cellar/gauche/
にgit clone.
いざ,M-x gauche
(begin (add-load-path "/usr/local/Cellar/swank-gauche-master")
(require "swank-gauche") (with-module swank-gauche
(load-gauche-operator-args "/usr/local/Cellar/gauche/Gauche") (start-swank "/var/folders/lf/bt7rfh5s1wxgfnmwhx755vtw0000gn/T/slime.2035")))
*** SYSTEM-ERROR: couldn't open input file:
"/usr/local/Cellar/gauche/Gauche/doc/gauche-refe.texi": No such file or directory
Stack Trace:
_______________________________________
0 (grep "^@defun|^@defmac|^@defspec|^@deffn" gauche-refe-path (lambd
At line 558 of "/usr/local/Cellar/swank-gauche-master/swank-gauche.scm"
1 (load-gauche-operator-args "/usr/local/Cellar/gauche/Gauche")
At line 1 of "(standard input)"
Process inferior-lisp exited abnormally with code 70
エラーですね.
gaucheのソースのファイル名を見てみると,Gauche/doc/gauche-ref.texi
となっていました.
swank-gauche.scmの該当箇所を修正.
(define (load-gauche-operator-args gauche-source-path)
(when (not (elisp-false? gauche-source-path))
(load-operator-args #`",|gauche-source-path|/doc/gauche-ref.texi")))
;; (load-operator-args #`",|gauche-source-path|/doc/gauche-refe.texi") <=変更前
これで無事に動いた.