タイトルの通り、シェルでCommonLispのコードを実行する場合には動作し、EmacsのLisp開発環境であるSlimeでは、コードエラーとなってしまいます。
その理由がわかりません。
Emacsを起動し、Lispコードをバッファに表示。
lisp
1;;; LTKでボタンを表示する 2 3(ql:quickload :ltk) 4 5 6;; パッケージの作成 7(defpackage :ltk-btn-test 8 (:use :common-lisp 9 :common-lisp-user 10 :ltk) 11 (:export :main)) 12 13(in-package :ltk-btn-test) 14 15(defun main () 16 (with-ltk () 17 (let ((b (make-instance 18 'button 19 :text "Hello World!" 20 :command (lambda () 21 (format t "button push!") 22 (setf *exit-mainloop* t))))) 23 (pack b)))) 24 25(main) 26 27 28
この状態ででSlimeを起動し、C-c C-k すると下記のエラーが発生します。
M-- M-x slime Lsip name : ccl
slime
1There is no package named "LTK" . 2 [Condition of type CCL::NO-SUCH-PACKAGE] 3 4Restarts: 5 0: [CONTINUE] Retry finding package with name "LTK". 6 1: [USE-VALUE] Find specified package instead of "LTK" . 7 2: [MAKE-NICKNAME] Make "LTK" be a nickname for package "COMMON-LISP-USER". 8 3: [RETRY-COMPILE-FILE] Retry compiling #P"/home/k/drp_write/lisp/src_ltk/button_sample.lisp" 9 4: [SKIP-COMPILE-FILE] Skip compiling #P"/home/k/drp_write/lisp/src_ltk/button_sample.lisp" 10 5: [ABORT] Abort compilation. 11 --more-- 12 13Backtrace: 14
コマンドラインにて下記の通りにソースを読むと、LTKによるボタンが表示され、プログラムが動作します。
※画面上にはLTKライブラリによるGUIボタンが表示されています。
% ccl -l ./button_sample1.lisp /drp_write/lisp/src_ltk To load "ltk": Load 1 ASDF system: ltk ; Loading "ltk" button push! Welcome to Clozure Common Lisp Version 1.11-r16635 (LinuxX8632)! CCL is developed and maintained by Clozure Associates. For more information about CCL visit http://ccl.clozure.com. To enquire about Clozure's Common Lisp consulting services e-mail info@clozure.com or visit http://www.clozure.com. ?
Slimeではエラーになるのに、コマンドラインではエラーにならない理由がよくわかりません。
何故なのでしょうか?
SLIMEでの私の評価方法が間違っているのでしょうか?
以下、私のPC環境とEmacs設定を記載します。
↓↓↓
<環境>
LinuxMint18 xfce
Emacs 24.5
SLIME 2.20
LISP Clozure CL
<SLIME実行コマンド>
下記の.emacsd設定により、CommonLisp処理系を選択できるようにしています。
私はClozureCLを選択しています。
M-- M-x slime Lsip name : ccl
<.emacsdの記述 Slime抜粋>
lisp
1;;; SLIME設定 2 3;; CommonLisp開発環境 SLIMEのセットアップ 4(require 'slime) 5(set-language-environment 'utf-8) 6(setq slime-net-coding-system 'utf-8-unix) 7 8 9;; 処理系選択 10;; M-- M-x slime 11;; このコマンドで処理系を選ぶことができる。 12 (setq slime-lisp-implementations 13 '((clisp ("/usr/bin/clisp")) 14 (sbcl ("/usr/bin/sbcl")) 15 (ccl ("/usr/bin/ccl")))) 16 17;;(setq inferior-lisp-program "clisp") ; CommonLisp用 <-- sbclがインストールされている時はそれが優先らしい 18(setq inferior-lisp-program "/usr/local/bin/ccl") ; Clozure CL用 19;;(setq load-path (cons (expand-file-name "~/.emacs.d/elisp/slime") load-path)) 20171024 MELPA管理に変更したのでコメントアウト 20 21 22(require 'slime-autoloads) 23;(slime-setup) 24(slime-setup '(slime-fancy)) 25 26;; slime用補完機能 27(require 'ac-slime) 28(add-hook 'slime-mode-hook 'set-up-slime-ac) 29(add-hook 'slime-repl-mode-hook 'set-up-slime-ac) 30(eval-after-load "auto-complete" 31 '(add-to-list 'ac-modes 'slime-repl-mode)) 32
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/16 15:41