2012-08-02 2 views
0

Aquamacs + Slime을 실행 중이며 Aquamacs를 시작할 때 자동으로 Slime을 시작할 수 있습니다. 그러나, 내가 그 파일을로드하려고하는 방법에 따라 다양한 오류가 계속 그 후 lisp 파일을로드하려고하면. 여기에 ... 나는 다음과 같은 오류가Aquamacs + slime : 시작시 lisp 파일로드

error: Buffer *inferior-lisp* is not associated with a file. 

내가 loadcompile-and-loadslime-load-file 등 다른 기능을 시도하고 각각 다음과 같은 오류가있어 얻을 내 preferences.el

(setq inferior-lisp-program "~/ccl/dx86cl64" 
    slime-startup-animation nil) 
(require 'slime) 
(split-window-horizontally) 
(other-window 1) 
(slime) 
(eval-after-load "slime" 
    '(progn 
     (slime-compile-and-load-file "/Users/xxxxx/xxxxx/load-seq.lisp") 
)) 

Invalid read syntax: # 
Symbol's function definition is void: compile-and-load 
error: Not connected. 

슬림 REPL에서 (load "/Users/xxxxx/xxxxx/load-seq.lisp") 할 때 lisp 파일을로드 (및 컴파일) 벌금. Preferences.el에 넣을 때처럼, eval-after-load을 사용하고 있어도 점액이로드 될 때까지 기다리지 않는 것처럼 보입니다.

답변

5

slime-compile-and-load-file 기능의 사용에 대해 오해 한 것 같습니다. 그 문서화 문자열은 말한다 :

(slime-compile-and-load-file &optional POLICY)

컴파일 및로드 버퍼의 파일 및 하이라이트 컴파일러 노트.

이 함수는 현재 버퍼와 이미 연관된 파일에 대해 작동하며 파일 이름이 아닌 컴파일 정책이 선택적 인수로 필요합니다. 그래서 코드는 다음과 같이 했어야 : 점액이 리스프 서버에 연결할 때 slime-connected-hook 함수의 목록을 포함

(slime) 
(add-hook 'slime-connected-hook 
      (lambda() 
      (find-file "/Users/xxxxx/xxxxx/load-seq.lisp") 
      (slime-compile-and-load-file))) 

호출 할 수 있습니다.

하지만 이맥스 초기화 파일이 이멕스가 아닌 다른 Lisp 코드를 적재 할 수 있는지 확실하지 않습니다. CCL init 파일이 더 좋은 장소가 될 것입니다. CCL 설명서의 2.4. Personal Customization with the Init File을 참조하십시오.

또한, load 함수는 Emacs Lisp 코드를 실행하기위한 함수입니다. slime-load-file은 호출하기에 적합한 함수이지만, 너무 일찍 호출 된 경우 (또는 SLIME이 Lisp 서버에 연결되기 전에) 호출되었습니다. slime-connected-hook 후크에 추가 되었다면 효과가있었습니다. 사실, 난 당신이 이맥스를 시작할 때마다 리습 코드를 컴파일에 대한 유효한 변명이없는 경우 slime-compile-and-load-file 이상 slime-load-file을 추천하고 싶은 (다시 당신은 정말 이맥스에서 그것을하고 싶은) : 마지막으로

(add-hook 'slime-connected-hook 
      (lambda() 
      (slime-load-file "/Users/xxxxx/xxxxx/load-seq.lisp"))) 

compile-and-load이라는 기능은 없습니다.