2012-02-05 30 views
20

İşletim sistemim Debian Squeeze'dır. ViMIT-Şeması ile slimv için REPL nasıl başlatılır

(12 Temmuz 2010 02:29:33 derlenmiş, 9 Ağustos 2008) 7.2 Gelistirilmis ben http://kovisoft.bitbucket.org/tutorial.html bir öğretici okumak ve MİT-Programı için REPL başlatmaya çalışması -

VIM: İşte vim versiyonu. Maalesef başlayamadım. Ben, "c" basıldığında

, bir terminal penceresi yükleme mit-düzenleme başlamıştır. VIM'in REPL tamponunda hiçbir şey gösterilmedi. Bazı hatalar terminalde gösterdi:

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> 

ben kaynak kodunu okuyup (netcat ve başka bir şey parametreleri hakkında) bazı hatalar düzeltildi, burada fark dosyasıdır:

*** /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)) 

Ben denenecek, ancak bazı yeni sorunlar oldu.

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

Burada

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

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

Burada paketin günlük dosyası (swank.log) verilmiştir:

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 da çalışan bir Swank sunucusuna bağlanabilir, bu yüzden elle düzeni Swank sunucusunu başlatmak için denemenizi öneririz. Bu sayede problemin swank tarafında mı yoksa slimv tarafında mı olduğunu kontrol edebilirsiniz. Swank sunucusunu çalıştırabiliyorsanız, daha sonra, düğmesine basarak cvv bağlanmalıdır. Gördüğüm gibi "2 hata" yazdırılıyor, ancak hataların tam olarak ne olduğunu biliyor musunuz? –

+1

; netcat: "[herhangi birinde] 4005 ..." yazıyor bir hatadır. Kaynak kodunu okudum ve bunu buldum. –

+1

@Tamas Kovacs: swank-mit-scheme.scm üzerinde bir hata olduğunu tespit ettim. İşte buggy kodu: (cond ((eşleşmiyor) (error "netcat:" line)) (else (subprocess-input-port nc))) Debian'da netcat'in çıktısı çıktılarını kullanır. Bunu yorumlamak, yeni bir kod yazmak daha iyi hale getirdi. Ama "c" ye bastığımda, satırda oluşan hatalar da vardı (toplam 0 (+ (* toplam 16) (char-> hex-digit (read-char in))))) (integer-add) 192 #f). –

cevap

4

Bu bilinen bir sorundur. Bu sorunu gideren ve diğer birkaçını da düzeltmek için gitme yanıtımdaki a patched version Slimv var. ben Slimv kullanılan, bu yüzden kesin değişiklikler yaptığım ne kafamın üstünden hatırlamıyorum ki uzunca bir süre önce olduğunu

Not. Bunu sadece OS X'de test ettim, bu yüzden YMMV.

+0

Uzun yıllar önce Lisp'ten ayrıldım. Bu problemi çözdüğümü hatırlıyorum. Netcat'ın farklı sürümlerinin farklı davranışları olduğundan, bu bir uyumluluk sorunudur. Netcat'ın bsd versiyonu olduğu varsayılıyor. –

+0

Bağlantı öldü ... Güncelleme yapabilir misiniz? –

+0

@SunQingyao Son zamanlarda vimrc'imi güncelledim ve artık kullanmadığım bir sürü eski eklentiyi sildim. Hala etrafta yattığım yamulmuş bir belimin bir kopyasının olduğunu düşünmüyorum, üzgünüm. Bu hala slimv'in son sürümü ile ilgili bir sorun mu? https://github.com/kovisoft/slimv – Symaxion