Scheme-langserver 是基于 Chez Scheme 并兼容 scheme r6rs 的 language server protocol 实现。它最大的特点是基于未完成的代码做编程辅助,包括自动完成、定义跳转等。这些功能是基于对 r6rs 标准的 scheme 进行静态分析得到的。它被发布在 Akku 和 github 。
一些辅助功能如自动完成、定义跳转、鼠标悬停显示文档等功能对于编程十分有帮助。但是,和其他的编程语言如 java 、python 、javascript 和 c ,lisp 系的语言服务器协议实现( language server protocol implementation )几乎是一篇空白。emacs 的 Geiser 、Dr. Racket 的 racket langserver 还有 swish-lint 等等,他们的工作基本上是基于 repl ( Read-Eval-Print Loop )或者词法解析器的,而不是基于编程的一般过程。例如,如果程序员正参与一个未完成的项目,里面的代码还并不是都能跑起来,Geiser 或者其他的竞品都只能提供对顶级变量、标识符的自动补全,这些标识符在 Chez Scheme 里面一般都通过 environment-symbols 过程列出来。也就是说,对于未完成的代码和局部标识符、局部变量(在其他语言中自动完成功能主要就是在补全它们),Geiser 等等无济于事。类似的事情同样出现在定义跳转等其他功能上。
目前,scheme-langserver 已经发布了 1.0.10 版本,通过多线程加速了代码索引过程。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.