我的操作系统是Debian Squeeze。这是vim版本:
VIM – Vi IMproved 7.2(2008年8月9日,编译2010年7月12日02:29:33)
我在http://kovisoft.bitbucket.org/tutorial.html读了一本教程,并尝试启动麻省理工学院的REPL。不幸的是,我没有开始。
当我按“c”时,它开始一个终端窗口加载mit-scheme。 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>
我读了源代码并修复了一些bug(关于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.
这是日志文件(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)
这是包:
- 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 .g.S@.@..;......
- 0020 00 01 c6 2c 0f a5 f9 57 b4 93 fc 40 7f 85 80 18 ...,...W...@....
- 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 .4ZF@.@..{......
- 0020 00 01 0f a5 c6 2c fc 40 7f 85 f9 57 b4 c6 80 10 .....,.@...W....
- 0030 10 00 fe 28 00 00 01 01 08 0a 00 16 25 c3 00 16 ...(........%...
- 0040 25 c3 %.
这是一个已知的问题。我在我的git repo中有
a patched version的Slimv,它修复了这个问题,还有很多其他的。
请注意,很久以前,我使用了Slimv,所以我不能从头顶回忆起我做出的确切变化。我只在OS X上测试过,所以YMMV。