2013-04-20 2 views
1

this question에 따르면 변수 *DEBUGGER-HOOK*을 사용자 정의하여 디버거 대신 REPL로 되돌릴 수 있습니다. ~/.sbclrc에이 줄을 추가했는데 명령 줄에서 sbcl을 시작하면 모두 괜찮습니다.이맥스에서 꺼짐 디버거 SLIME

(setf *debugger-hook* #'(lambda (c h) (declare (ignore h)) (print c) (abort))) 

그러나 위의 내용은 Emacs SLIME에서 작동하지 않습니다. 파일 (C-C C-k)을 컴파일 /로드 할 때마다 디버거를 계속 호출합니다 (계산 중단, 재시작, 새 값 입력 등의 옵션 사용). 어떻게하면 SLIME에 오류 메시지를 출력하고 다시 최상위로 보내 줄 것을 요청할 수 있습니까? 그렇습니다. 이전과 마찬가지로 SBCL 및 ~/.sbclrc와 동일합니다. SLIME이 사용자의 설정 인 *DEBUGGER-HOOK*을 따르지 않는 것 같습니다.

+0

'* DEBUGGER-HOOK *'는 구현의 디버거를 가리킨다 고 생각합니다. 그것은 표준의 일부입니다. 그래서, 저는 슬림이 그것을 존중할 필요가 있다고 생각하지 않습니다. –

+0

@FaheemMitha 예, 그것은 Common Lisp 표준의 일부입니다 : http://clhs.lisp.se/Body/v_debugg.htm –

답변

1

으로 SWANK:SWANK-DEBUGGER-HOOK-*DEBUGGER-HOOK*를 (어떤이 다시 시작 등의 목록을 보여줍니다)하지만 어떻게 든 나를 위해 작동하지 않는 대체하지 점액을 강제해야한다 ~/.swank.lisp 파일에 전무로 SWANK:*GLOBAL-DEBUGGER* 설정 http://common-lisp.net/project/slime/doc/html/Other-configurables.html 당, 즉 SWANK:*GLOBAL-DEBUGGER*은 전무하지만, 어쨌든 *DEBUGGER-HOOK* SLIME으로 대체됩니다. 어쩌면 너 더 운이 좋을거야.

임시 해결 방법으로 *DEBUGGER-HOOK*을 수동으로 slime-repl 버퍼에 원하는대로 설정할 것을 제안 할 수 있습니다. 이는 나를 위해 효과가 있습니다.

+0

당신과 마찬가지로 작동하지 않습니다. ~/.swank.lisp에'(setq SWANK : * GLOBAL-DEBUGGER * nil)'을 넣었으나 효과가 없습니다. 내가 REPL에'* debugger-hook *'을 설정할 수 있지만, 매번 그 일은 어색하다. 나는 아무도 그것을 얻지 않는다면 slime-devel 메일 링리스트에서 이것을 묻는 것을 생각하고있다. –