2016/01/13

OS X Yosemiteにswank-gaucheのインストール

きっかけはTwitter

早速インストール. 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") <=変更前

これで無事に動いた.


© 2022 wat-aro