2012-02-05 19 views
20

Hệ điều hành của tôi là Debian Bóp. Dưới đây là phiên bản vim:Cách bắt đầu REPL cho slimv với MIT-Scheme

VIM - Vi Improved 7.2 (2008 ngày 09 tháng 8, biên soạn Jul 12 2010 02:29:33)

tôi đọc một hướng dẫn về http://kovisoft.bitbucket.org/tutorial.html và cố gắng để bắt đầu REPL cho MIT-Scheme. Thật không may, tôi không thể bắt đầu.

Khi tôi nhấn ", c", nó đã bắt đầu chương trình giảm tải cửa sổ đầu cuối. Không có gì được hiển thị trong bộ đệm REPL của vim. Một số lỗi cho thấy tại nhà ga:

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> 

Tôi đọc mã nguồn và cố định một số lỗi (khoảng các thông số của netcat và cái gì khác), đây là file 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)) 

tôi thử lại, nhưng một số vấn đề mới đã xảy ra.

;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. 

Dưới đây là các tập tin log (swank.log)

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

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

Dưới đây là các gói:

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 cũng có thể kết nối với máy chủ swank đang chạy, vì vậy tôi khuyên bạn nên cố gắng khởi động máy chủ vuốt chương trình theo cách thủ công. Bằng cách này bạn có thể kiểm tra xem vấn đề là ở phía bên sườn hay bên hông. Nếu bạn có thể chạy máy chủ swank, thì slimv nên kết nối với nó khi nhấn, c. Khi tôi thấy "2 lỗi" được in, nhưng bạn có biết chính xác lỗi là gì không? –

+1

; netcat: "nghe [bất kỳ] 4005 ..." là lỗi. Tôi đọc mã nguồn và thấy rằng. –

+1

@Tamas Kovacs: Tôi thấy đó là lỗi trên swank-mit-scheme.scm. Đây là mã lỗi: (cond ((không khớp) (lỗi "netcat:" line)) (else (subprocess-input-port nc))) Nó sử dụng kết quả đầu ra lỗi thời của netcat trong Debian. Bình luận nó, viết một mã mới làm cho nó tốt hơn. Nhưng khi tôi nhấn ", c", cũng có lỗi xảy ra trong dòng (tổng 0 (+ (* tổng 16) (char-> hex-digit (read-char in))))) được tạo (số nguyên-thêm 192 #f). –

Trả lời

4

Đây là vấn đề được biết đến. Tôi có a patched version của Slimv trong repo git của tôi mà sửa chữa vấn đề này và khá một vài người khác.

Lưu ý rằng cách đây khá lâu tôi đã sử dụng Slimv, vì vậy tôi không thể nhớ lại từ đầu của tôi về những thay đổi chính xác mà tôi đã thực hiện. Tôi chỉ thử nghiệm điều này trên OS X, vì vậy YMMV.

+0

Tôi đã rời xa Lisp từ lâu rồi. Tôi nhớ tôi đã giải quyết vấn đề đó. Một cách nghiêm túc, đó là một vấn đề tương thích, vì các phiên bản khác nhau của netcat có các hành vi khác nhau. Đó là cho rằng netcat là phiên bản bsd. –

+0

Liên kết đã chết ... Bạn có thể cập nhật nó không? –

+0

@SunQingyao Gần đây tôi đã cập nhật vimrc của mình và xóa một tấn plugin cũ mà tôi không sử dụng nữa. Tôi không nghĩ rằng tôi vẫn còn có một bản sao của bản vá lỗi của tôi nằm xung quanh, xin lỗi. Đây có phải là vấn đề với phiên bản slimv mới nhất không? https://github.com/kovisoft/slimv – Symaxion