qingpeng9802/vscode-common-lisp

GitHub: qingpeng9802/vscode-common-lisp

提供 VS Code 中 Common Lisp 语言的全面支持。

Stars: 31 | Forks: 6

# VS Code 的 Common Lisp 语言支持 此 VS Code 扩展支持 Common Lisp 的语法高亮、代码片段、自动完成、悬停、定义、引用、文档符号、调用层次和语义标记。 ## 功能 ### 语法高亮 ### 代码片段 ## 使用和推荐 入门指南:[概述](https://code.visualstudio.com/docs/languages/overview). ### 快速指南 文件类型:`lisp`、`lsp`、`l`、`cl`、`asd`、`asdf`,您也可以自行添加更多:[添加文件扩展名到语言](https://code.visualstudio.com/docs/languages/overview#_adding-a-file-extension-to-a-language). | 符号类型 | 暗色版颜色 | 亮色版颜色 | |----------------------------------------------------|------------|------------| | 宏、声明 | 蓝色 | 深蓝色 | | 特殊操作符 | 紫色 | 紫色 | | 访问器、函数、标准泛型函数 | 黄色 | 钢黄色 | | 类、系统类、类型、条件类型 | 绿色 | 深绿色 | | 关键词包符号、局部变量 | 天蓝色 | 深蓝色 | | 常量变量 | 浅蓝色 | 蓝色 | | 特殊变量 | 红色 | 棕色 | 代码片段支持:`defun`、`if`、`cond`、`let`、`let*`、`lambda` 等。 对于大文件,在某些罕见情况下,在切换文件或快速发生某些大变化时,语义高亮可能会失去同步。您只需在文件中输入任何字符即可恢复。 ### 首选项 语言标识符(id)为 `commonlisp`。 如果您需要仅针对 Common Lisp 文件自定义设置,请在 `settings.json` 中添加类似以下内容: ``` "[commonlisp]": { "editor.bracketPairColorization.enabled": false } ``` 括号对着色: - 这在 VS Code 中默认启用。[默认](https://code.visualstudio.com/updates/v1_67#_bracket-pair-colorization-enabled-by-default)。可以通过设置 `"editor.bracketPairColorization.enabled": false` 来禁用括号对着色。 (感谢 [Bracket Pair Colorizer 2](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2) 过去的贡献) 悬停提示: - 如果您觉得这很烦人,可以在 `编辑器>悬停` 中禁用它,或者在 `编辑器>悬停:延迟` 中设置更大的延迟。 快速建议: - 如果您在活动代码片段中需要建议,可以禁用 `编辑器>建议:代码片段阻止快速建议`。 - 如果您需要将 `代码片段` 放在建议的最上面,可以设置 `"editor.snippetSuggestions": "top"`。 语义高亮: - 可以通过设置 `"editor.semanticHighlighting.enabled": false` 来禁用语义高亮。 此外,此扩展还有一些内置设置,可以自定义更多 **高级首选项**, 例如,应使用哪个语言功能提供程序,应排除哪个令牌范围,以及如何处理反引号部分。请参阅 [wiki](https://github.com/qingpeng9802/vscode-common-lisp/wiki/Configuration). ## 设计 ### 语法高亮 由于 Common Lisp 的函数特性,我们使用 Common Lisp 的直觉来设计语法高亮,而不是使用非函数语言的直觉来设计语法高亮。也就是说,我们严格遵循 CL-ANSI 1.4.4.14 对 COMMON-LISP 包中的 978 个外部符号进行分类。 我们处理了 [Common Lisp HyperSpec](https://www.lispworks.com/documentation/HyperSpec/Front/) 以获取每个符号的类型。结果在 `./assets/COMMON-LISP-symbols.csv` 中,请随意重用此结果 :) 我们为不同类型的符号分配不同的颜色,分配规则可以在 `./syntaxes/commonlisp.yaml` 文件的起始注释中找到。此文件包含所有规则的注释(相关信息在 `CL-ANSI` 中)。 ### 静态分析 目前,我们使用一个非常简单的手写解析器,并结合正则表达式来解析代码。因此,准确性、精确性和性能还不够好。然而,我们没有计划进一步复杂化解析器,因为这就像是用 TypeScript 重新造轮子(新的解析器)。 由于此扩展被设计为 [Web 扩展](https://code.visualstudio.com/api/extension-guides/web-extensions),我们正在考虑在未来使用 [node-tree-sitter](https://github.com/tree-sitter/node-tree-sitter) 作为解析器。然而,我们没有计划近期更新解析器,因为我们仍在评估其对 VS Code 语言服务架构的影响(请参阅 [Anycode](https://github.com/microsoft/vscode-anycode))。 ### 了解更多 请参阅 [开发者指南](https://github.com/qingpeng9802/vscode-common-lisp/blob/master/CONTRIBUTING.md). ## 致谢 [CL-ANSI 标准草案](https://franz.com/support/documentation/cl-ansi-standard-draft-w-sidebar.pdf), [Common Lisp HyperSpec](https://www.lispworks.com/documentation/HyperSpec/Front/), [vscode-scheme](https://github.com/sjhuangx/vscode-scheme), [Scheme.tmLanguage](https://github.com/egrachev/sublime-scheme/blob/master/Scheme.tmLanguage), [Lisp.tmLanguage](https://github.com/bradrobertson/sublime-packages/blob/master/Lisp/Lisp.tmLanguage), [regex101](https://regex101.com/), 来自 [structure101](https://structure101.com/) 的 OSS 许可证 ### 图片来源 `icon.png` 来自 [Common-Lisp.net](https://common-lisp.net/) 并进行了缩放。 `commonlisp_file_icon.svg` 从 common lisp 图标提取,并使用 Conrad Barski 的 [Logo](https://www.lisperati.com/logo.html)中的紫色着色。 `icon.png` 和 `commonlisp_file_icon.svg` 在 [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)许可下使用。 `Syntax Highlighting` 中的代码段来自 [SBCL 仓库](https://github.com/sbcl/sbcl).
标签:Common Lisp, IDE扩展, Subfinder, VS Code, 代码同步, 代码提示, 代码片段, 代码编辑器插件, 代码补全, 代码跳转, 关键字包符号, 函数, 威胁情报, 宏定义, 局部变量, 常量变量, 开发者工具, 文件扩展名, 条件类型, 特殊变量, 特殊操作符, 类, 类型, 系统类, 编程语言支持, 编程语言特性, 编程辅助, 自动化攻击, 自动完成, 访问器, 语义同步, 语义高亮, 语法高亮