2012-02-05 3 views
20

제 운영 체제는 Debian Squeeze입니다. VI가MIT-scheme으로 slimv 용 REPL을 시작하는 방법

(2010년 7월 12일 2시 29분 33초 컴파일 8 월 (9) 2008) 7.2을 개선 내가 http://kovisoft.bitbucket.org/tutorial.html에 튜토리얼을 읽고 MIT-계획에 대한 REPL을 시작하려고 -

VIM : 여기에 정력 버전입니다. 불행히도, 나는 시작하지 못했습니다.

","를 누르면 단말기 창을 시작합니다. vim의 REPL 버퍼에 아무것도 표시되지 않았습니다. 일부 오류가 터미널에 보여 주었다 :

Listening on port: 4005 
;netcat: "4005: inverse host lookup failed: Unknown host" 
;To continue, call RESTART with an option number: 
; (RESTART 1) => Return to read-eval-print level 1. 

2 error> 

내가 소스 코드를 읽고 (netcat을하고 다른 무언가의 매개 변수에 대해) 몇 가지 버그를 수정, 여기은 diff 파일입니다 :

*** /home/gaussfrank/slimv/slime/contrib/swank-mit-scheme.scm 2012-02-02 16:41:58.357463955 +0800 
--- swank-mit-scheme.scm 2012-02-06 22:30:42.929212874 +0800 
*************** 
*** 113,126 **** 

    (define (netcat port) 
    (let* ((sh (os/shell-file-name)) 
! (cmd (format #f "exec netcat -v -q 0 -l ~a 2>&1" port)) 
    (netcat (start-pipe-subprocess sh 
        (vector sh "-c" cmd) 
        scheme-subprocess-environment))) 
     (list netcat port))) 

    (define (netcat-accept nc) 
! (let* ((rx "^Connection from .+ port .+ accepted$") 
    (line (read-line (subprocess-input-port nc))) 
    (match (re-string-match rx line))) 
     (cond ((not match) (error "netcat:" line)) 
--- 113,126 ---- 

    (define (netcat port) 
    (let* ((sh (os/shell-file-name)) 
! (cmd (format #f "exec netcat -v -q 0 -l -p ~a 2>&1" port)) 
    (netcat (start-pipe-subprocess sh 
        (vector sh "-c" cmd) 
        scheme-subprocess-environment))) 
     (list netcat port))) 

    (define (netcat-accept nc) 
! (let* ((rx "^listening on.*") 
    (line (read-line (subprocess-input-port nc))) 
    (match (re-string-match rx line))) 
     (cond ((not match) (error "netcat:" line)) 

내가 시도하지만, 몇 가지 새로운 문제가 발생했습니다.

;The object #f, passed as the second argument to integer-add, is not the correct type. 
;To continue, call RESTART with an option number: 
; (RESTART 4) => Specify an argument to use in its place. 
; (RESTART 3) => Return to SLIME top-level. 
; (RESTART 2) => Close connection. 
; (RESTART 1) => Return to read-eval-print level 1. 

여기

[---Sent---] 0.21 
(:emacs-rex (swank:connection-info) nil t 1) 

[---Sent---] 16.11 
(:emacs-rex (swank:swank-require 'swank-fuzzy) nil t 2) 

여기 패킷의 로그 파일 (swank.log)입니다 :

8 0.739991 127.0.0.1 127.0.0.1 TCP 50732 > pxc-pin [PSH, ACK] Seq=1 Ack=1 Win=32792 Len=51 TSV=1451459 TSER=1451459 
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ..............E. 
0010 00 67 91 53 40 00 40 06 ab 3b 7f 00 00 01 7f 00 [email protected]@..;...... 
0020 00 01 c6 2c 0f a5 f9 57 b4 93 fc 40 7f 85 80 18 ...,[email protected] 
0030 10 03 fe 5b 00 00 01 01 08 0a 00 16 25 c3 00 16 ...[........%... 
0040 25 c3 30 30 30 30 32 64 28 3a 65 6d 61 63 73 2d %.00002d(:emacs- 
0050 72 65 78 20 28 73 77 61 6e 6b 3a 63 6f 6e 6e 65 rex (swank:conne 
0060 63 74 69 6f 6e 2d 69 6e 66 6f 29 20 6e 69 6c 20 ction-info) nil 
0070 74 20 31 29 0a         t 1). 

9 0.740009 127.0.0.1 127.0.0.1 TCP pxc-pin > 50732 [ACK] Seq=1 Ack=52 Win=32768 Len=0 TSV=1451459 TSER=1451459 
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ..............E. 
0010 00 34 5a 46 40 00 40 06 e2 7b 7f 00 00 01 7f 00 [email protected]@..{...... 
0020 00 01 0f a5 c6 2c fc 40 7f 85 f9 57 b4 c6 80 10 .....,[email protected] 
0030 10 00 fe 28 00 00 01 01 08 0a 00 16 25 c3 00 16 ...(........%... 
0040 25 c3           %. 
+1

Slimv도 실행중인 스웽크 서버에 연결할 수 있으므로 스킴 서버를 수동으로 시작하는 것이 좋습니다. 이 방법을 사용하면 문제가 허영면 또는 슬림면에 있는지 확인할 수 있습니다. swank 서버를 실행할 수 있다면 slimv는를 눌러서 연결해야합니다. c. "2 오류"가 인쇄되어 있지만 오류가 정확히 무엇인지 압니까? –

+1

; netcat : "[any] 4005에서 수신 중 ..." 은 오류입니다. 나는 소스 코드를 읽고 그것을 발견했다. –

+1

@Tamas Kovacs : swank-mit-scheme.scm에 버그가 있음을 발견했습니다. 다음은 버그 코드입니다. (cond (일치하지 않음) (오류 "netcat :"행)) (else (subprocess-input-port nc))) Debian에서 netcat의 오래된 출력을 사용합니다. 그것을 주석으로 달아서 새로운 코드를 작성하면 더 나아졌습니다. 그러나 ", c"를 눌렀을 때, 행에 버그가 발생했습니다 (sum-0 (+ (* sum 16) (char-> 16 진수 (read-char in))))) 192 #f). –

답변

4

이것은 알려진 문제입니다. 나는이 문제점 및 몇몇 다른 사람을 고치는 나의 git repo에있는 Slimv의 a patched version가있다.

Slimv를 사용한 것은 꽤 오래 전 이었으므로 정확한 변경 내용은 머리 꼭대기에서 기억할 수 없습니다. 나는 OS X에서만 이것을 테스트 했으므로 YMMV.

+0

나는 오래 전에 Lisp을 떠났다. 나는 그 문제를 해결했음을 기억한다. 엄밀히 말하면, 다른 버전의 netcat은 다른 동작을하기 때문에 호환성 문제입니다. netcat이 bsd 버전이라고 가정합니다. –

+0

링크가 죽었습니다 ... 업데이트 할 수 있습니까? –

+0

@SunQingyao 최근 vimrc를 업데이트하고 더 이상 사용하지 않은 오래된 플러그인을 제거했습니다. 나는 패치 된 슬림 덩어리가 아직 남아 있다고 생각하지 않는다. 미안하다. 이것은 여전히 ​​slimv의 최신 버전에서 문제가됩니까? https://github.com/kovisoft/slimv – Symaxion