# @lisp 扩展 **Repository Path**: atlisp/atlispext ## Basic Information - **Project Name**: @lisp 扩展 - **Description**: @lisp 的 vscode 扩展工具包,支持 autolisp/visuallisp dxf dcl 的 语法提示和自动完成。 简繁互换等。 autolisp基本函数、@lisp函数、系统变量的悬停提示与自动补全; vla-get-* vla-put-* vla-* 系列属性和方法 支持悬停提示与自动补全; DXF 查询。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: main - **Homepage**: https://atlisp.cn - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-12-23 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: vsc-plugins **Tags**: VSCode, AutoLisp ## README # @lisp 扩展 - AutoLISP/Visual LISP 语言服务 [![VSCode](https://img.shields.io/badge/VS%20Code-1.82%2B-blue)](https://code.visualstudio.com) [![CAD](https://img.shields.io/badge/CAD-%E5%85%A8%E9%83%A8CAD-red)](https://www.autodesk.com) [![License](https://img.shields.io/badge/License-MIT-green)](https://gitee.com/atlisp/atlispext/blob/main/LICENSE) 📚 **[架构](doc/architecture.md)** · **[MCP 调试](doc/mcp-debug.md)** · **[AI 模块](doc/ai-module.md)** · **[开发指南](doc/development.md)** 为 **AutoLISP / Visual LISP** 提供完整的 VS Code 开发体验,支持 **全部CAD** 平台(AutoCAD、ZWCAD、GStarCAD、BricsCAD 等)。集成代码编辑、智能补全、实时诊断、调试器、REPL、AI 辅助、包管理等全方位功能。 --- ## 📦 安装 在 VS Code 扩展市场搜索 **@lisp** 或 **atlisp-funlib** 即可安装。 ### 在 CAD 中安装 @lisp 函数库 将以下代码复制到 CAD 命令行,回车即可: ```commonlisp (progn(vl-load-com)(setq s strcat h "http" o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://atlisp.""org/@"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText)))) ``` > 提示:用 Ctrl+C 复制,到 CAD 命令行 Ctrl+V 粘贴。 --- ## 📖 使用说明 ### 📝 代码编辑与智能补全 #### 自动补全 输入代码时自动弹出补全建议,支持: | 补全类型 | 说明 | 示例 | |---------|------|------| | AutoLISP 基本函数 | 所有内置函数 | `setq`、`entmake`、`ssget` | | VLA 属性/方法 | ActiveX 交互 | `vla-get-color`、`vla-addline` | | 反应器函数 | `vlr-*` 系列 | `vlr-object-reactor` | | 系统变量 | CAD 系统变量 | `clayer`、`osmode` | | DXF 组码 | 输入 `dxf` 开头 | `dxf0`(图元类型)、`dxf10`(起点) | | 图元名查组码 | 输入 `dxf+图元名` | `dxfcircle`(圆的所有组码) | | @lisp 函数 | 已安装的 @lisp 包函数 | `string:format`、`block:make` | | DCL 控件与属性 | DCL 文件中的补全 | `:dialog`、`:edit_box` | #### 悬停提示 鼠标悬停在函数、变量、系统变量上时,显示详细的说明文档和用法示例。 #### 代码片段 输入前缀后按 Tab 触发预定义的代码模板: - 函数定义:`defun` + Tab → 生成函数框架 - 循环结构:`repeat`、`while`、`foreach` - 条件判断:`if`、`cond`、`progn` - 实体操作:`entmake`、`entmod` - `vla-` 系列方法补全 自定义片段配置文件:`.vscode/atlisp.code-snippets`。 --- ### 🔍 代码分析与诊断 本扩展内置 **@atlisp/lint** 静态分析引擎,提供 70+ 条检查规则。 #### 运行方式 | 方式 | 操作 | |------|------| | **实时诊断** | 编辑时自动在问题面板显示错误/警告 | | **手动审查** | `alt+shift+i` 或命令面板 → `@lisp: 代码审查` | | **一键修复** | 诊断结果中点击 💡 或 `alt+shift+f` | | **项目分析** | 命令面板 → `@lisp: 项目分析`(跨文件) | #### 检查规则 涵盖括号匹配、`setq` 变量参数校验、`defun` 结构完整性、函数参数个数校验、未使用变量、多余括号、覆盖内建函数、危险函数(`quit`/`exit`/`startapp`)等。 #### 配置 在 `settings.json` 中配置: ```json { "atlisp.staticDiagnostics.enable": true, "atlisp.staticDiagnostics.checks": { "parens": "error", "unused_variable": "warn", "dangerous_function": "error" } } ``` #### 括号辅助 - **括号配对高亮**:光标置于 `(` 或 `)` 时自动高亮匹配的另一半 - **按括号层级扩缩选区**:`Shift+Alt+→` / `←` 在嵌套的 S 表达式间逐层扩缩选区 - **彩虹括号**:不同层级的括号显示不同颜色,便于区分嵌套层次 - **括号自动闭合**:输入 `(` 自动补全 `)`,且光标位于括号内 --- ### 🎨 语义着色与主题 内置两套专业配色主题: - **Atlisp Light** — 浅色主题 - **Atlisp Dark** — 深色主题 在命令面板选择 `首选项:颜色主题` 切换。 基本函数、对象属性/方法、系统变量、只读变量、@lisp 函数使用不同的颜色区分显示。 --- ### 📐 代码格式化 #### 格式化方式 | 方式 | 操作 | |------|------| | **格式化当前文件** | `alt+shift+f` 或右键 → 格式化文档 | | **格式化选中区域** | 选中代码 → 右键 → 格式化选定内容 | | **保存时自动格式化** | 开启设置 `atlisp.format.formatOnSave` | | **DCL 格式化** | 同样支持 `.dcl` 文件的格式化 | #### 配置选项 ```json { "atlisp.format.indentWidth": 2, "atlisp.format.closeParenStyle": "same-line", "atlisp.format.maxLineChars": 80, "atlisp.format.formatOnSave": true } ``` `closeParenStyle` 可选值: - `same-line` — `(if a b)` 紧凑风格 - `new-line` — `(if a\n b\n)` 括号换行 --- ### 🐞 调试器(DAP) 支持附加到已运行的 CAD 进程或自动启动 CAD 进行断点调试。 #### 附加到 CAD 1. 启动 CAD 并打开要调试的 LSP 文件 2. VS Code 按 `F5` 或点击运行侧边栏 3. 选择 **@Lisp-Attach** 配置 4. 在编辑器行号左侧点击设置断点 5. 在 CAD 中执行你的 LSP 代码,VS Code 会在断点处暂停 #### 启动 CAD 调试 1. VS Code 按 `F5` 选择 **@Lisp-Launch** 配置 2. 扩展自动启动 CAD 并加载当前文件 3. 设置断点,在 CAD 中触发代码执行 #### 注意事项 - DAP 调试器仅支持 **Windows** 平台 - 支持 AutoCAD 2021+ 和 GStarCAD 2021+ - CAD 需设置 `LISPSYS = 1` 或 `2`(建议 `2`) - 文件编码推荐 **UTF-8**(GB2312/ANSI 可能导致调试异常) --- ### 💻 REPL(交互式求值) REPL 面板提供交互式 Lisp 执行环境。 #### 打开 REPL - 点击 VS Code 底部状态栏的 **@lisp** 按钮 - 或命令面板 → `@lisp: 打开 REPL` #### 使用方法 | 操作 | 说明 | |------|------| | **直接输入** | 在 REPL 输入框输入 Lisp 表达式,回车执行 | | **内联求值** | 编辑器中选中代码,按 `alt+shift+e`,结果显示在代码行内 | | **清除结果** | `alt+shift+c` 清除所有内联结果 | | **发送到 REPL** | 选中代码,`alt+shift+enter` 发送到 REPL 执行 | | **历史记录** | `alt+shift+r` 查看执行历史,可重新执行 | | **宏展开** | 在 REPL 中使用 `(macroexpand '(your-code))` | | **代码审查** | 使用 `(inspect 'symbol)` 查看符号详情 | --- ### 🔌 MCP 调试(atlisp-mcp) 跨平台的 CAD 交互调试方案,通过 MCP(Model Context Protocol)协议连接 CAD。 #### 安装前提 ```bash npm install -g @atlisp/mcp ``` CAD 需已运行。 #### 连接与使用 1. 点击左侧活动栏的 **MCP Debug** 图标打开面板 2. 点击 **Connect** 连接 CAD 3. 连接后在 `.lsp` 文件中选中代码 4. 按 `alt+shift+m+e` 发送到 CAD 求值 5. 结果在面板和输出通道中显示 #### 快捷键 | 快捷键 | 功能 | |--------|------| | `alt+shift+m+e` | 在 CAD 中求值选中代码 | | `alt+shift+m+r` | 加载当前 `.lsp` 文件到 CAD | | `alt+shift+m+i` | 检查变量/表达式 | #### 断点调试 1. 在编辑器行号左侧点击设置断点 2. 在 `defun` 上方点击 **Debug with Breakpoints** 3. 使用面板的 Step Over / Step Into / Continue 控制执行 4. 在 Watch 标签页添加变量名,自动在 CAD 中求值刷新 #### 多会话管理 可连接多个 CAD 实例(AutoCAD + ZWCAD 同时),在面板下拉框切换。 #### 配置项 | 设置 | 说明 | |------|------| | `atlisp.mcp.command` | MCP 服务器可执行文件路径(默认 `atlisp-mcp`) | | `atlisp.mcp.args` | 启动参数(默认 `["--stdio"]`) | | `atlisp.mcp.fileEncoding` | 文件编码(默认 `auto`) | --- ### 🤖 AI 辅助 内置 AI 功能支持多个 AI 提供商,可辅助编码、审查代码、生成代码。 #### 配置 AI 提供商 选择一个提供商并配置对应的 API Key: **@lisp(默认):** ```json { "atlisp.ai.provider": "atlisp" } ``` **Gemini:** ```json { "atlisp.ai.provider": "gemini", "atlisp.ai.geminiApiKey": "your-key", "atlisp.ai.geminiModel": "gemini-2.0-flash" } ``` **OpenAI 兼容(含 DeepSeek):** ```json { "atlisp.ai.provider": "openai", "atlisp.ai.openaiApiKey": "your-key", "atlisp.ai.openaiBaseUrl": "https://api.openai.com/v1", "atlisp.ai.openaiModel": "gpt-4o" } ``` **DeepSeek:** ```json { "atlisp.ai.provider": "deepseek", "atlisp.ai.deepseekApiKey": "your-key", "atlisp.ai.deepseekBaseUrl": "https://api.deepseek.com", "atlisp.ai.deepseekModel": "deepseek-chat" } ``` #### 功能 | 功能 | 快捷键 | 说明 | |------|--------|------| | **AI 聊天** | `ctrl+shift+a` | 在侧边栏与 AI 对话,可引用当前代码上下文 | | **从注释生成代码** | `ctrl+shift+g` | 在代码中写注释描述功能,AI 自动生成实现代码 | | **代码审查** | 右键 → AI → 审查代码 | AI 审查选中代码,指出问题并给出改进建议 | | **代码解释** | 右键 → AI → 解释代码 | AI 解释选中代码的功能和逻辑 | | **生成代码片段** | `ctrl+shift+r` | 选中代码,AI 生成类似功能的代码片段 | #### 温度设置 ```json { "atlisp.ai.temperature": 0.7 } ``` 范围 0.0(精确)到 2.0(创意),默认 0.7。 --- ### 📂 @lisp 包管理 #### 浏览包 1. 点击左侧活动栏的 **@lisp** 图标 2. 在包浏览器中浏览注册表中的所有可用包 3. 点击包查看详情(版本、描述、依赖) #### 安装 / 卸载包 | 操作 | 方法 | |------|------| | **安装** | 在包浏览器中点击包 → 安装按钮 | | **卸载** | 在已安装列表中点击包 → 卸载按钮 | | **更新** | 在已安装列表中点击有更新的包 → 更新按钮 | #### 编译应用包 将 `.lsp` 源码编译为 `.fas`(Fast-Load AutoLISP)格式: ``` 命令面板 → @lisp: 编译应用包 ``` #### 发布应用包 将应用包发布到 @lisp 注册表: ``` 命令面板 → @lisp: 发布应用包 ``` --- ### 🔧 @lisp CLI 集成 通过命令面板执行以下操作: | 命令 | 功能 | |------|------| | `@lisp: 安装包` | 按名称安装 @lisp 包 | | `@lisp: 搜索包` | 搜索远程注册表中的包 | | `@lisp: 拉取包` | 更新本地包到最新版本 | | `@lisp: 诊断` | 运行 doctor 检查环境健康状态 | | `@lisp: 文档查询` | 查询 @lisp 函数的在线文档 | | `@lisp: 项目初始化` | 初始化新的 @lisp 项目结构 | --- ### 🌐 简繁互转 自动识别并转换文件中简体/繁体中文字符。 | 操作 | 方法 | |------|------| | **全文转换** | 右键 → 简繁互转 → 全文转换 | | **选中区域转换** | 选中代码 → 右键 → 简繁互转 → 转换选中区域 | 支持 `.lsp` 和 `.dcl` 文件格式。 --- ### 📋 大纲与导航 #### 文档符号 在 VS Code 的大纲视图中按函数定义结构展示当前文件: - `defun` 定义的函数 - `setq` 定义的全局变量 - `vl-load-com` 等初始化调用 #### 定义跳转 - 按住 `Ctrl` 点击函数名跳转到定义 - 右键 → 转到定义 - `F12` 跳转到定义 #### 引用查找 - 右键 → 查找所有引用 - `Shift+F12` 查找引用 #### 工作区符号 `Ctrl+T` 在整个工作区中搜索函数和变量定义。 --- ## ⚙️ 开发环境要求 | 项目 | 要求 | |------|------| | VS Code | ≥ 1.82.0 | | CAD | 全部CAD(AutoCAD、ZWCAD、GStarCAD、BricsCAD 等) | | CAD 版本 | AutoCAD ≥ 2021,其他 CAD 最新版 | | LISPSYS | 1 或 2(建议 `2`,兼容性更好) | | 文件编码 | 推荐 **UTF-8**(GB2312/ANSI 可能导致调试异常) | | MCP 调试 | Node.js ≥ 18,`npm install -g @atlisp/mcp` | > 建议 `LISPSYS = 2`,编译的 `.fas` 可向下兼容低版本 CAD。 --- ## 🔑 快捷键 | 快捷键 | 功能 | |--------|------| | `alt+shift+e` | 内联求值 | | `alt+shift+c` | 清除内联结果 | | `alt+shift+l` | 加载文件到 CAD | | `alt+shift+enter` | 发送到 REPL | | `alt+shift+up` | 选择 S 表达式 | | `shift+alt+right` | 按括号层级扩大选区 | | `shift+alt+left` | 按括号层级缩小选区 | | `alt+shift+r` | REPL 历史 | | `alt+shift+i` | 代码审查 | | `alt+shift+f` | 自动修复 | | `ctrl+shift+a` | AI 聊天 | | `ctrl+shift+g` | 从注释生成代码 | | `ctrl+shift+r` | 生成代码片段 | | `alt+shift+m+e` | MCP 在 CAD 中求值 | | `alt+shift+m+r` | MCP 加载文件到 CAD | | `alt+shift+m+i` | MCP 检查变量/表达式 | | `alt+e` | 执行选区表达式 | | `alt+r` | MCP Debug 运行当前文件 | | `alt+i` | MCP Debug 检查选中变量 | --- ## ⚙️ 设置参考 | 设置项 | 说明 | 默认值 | |--------|------|--------| | `atlisp.lsp.enabled` | 启用 LSP(需重启) | `false` | | `atlisp.enableDiagnostics` | 启用实时诊断 | `true` | | `atlisp.enableRainbowBrackets` | 启用彩虹括号 | `true` | | `atlisp.format.indentWidth` | 缩进宽度 | `2` | | `atlisp.format.formatOnSave` | 保存时自动格式化 | `false` | | `atlisp.format.closeParenStyle` | 括号闭合风格 | `same-line` | | `atlisp.ai.provider` | AI 提供商 | `atlisp` | | `atlisp.ai.temperature` | AI 温度参数 | `0.7` | | `atlisp.mcp.command` | MCP 可执行文件路径 | `atlisp-mcp` | | `atlisp.mcp.fileEncoding` | 文件编码 | `auto` | | `atlisp.project.exclude` | 项目排除模式 | `["**/.git/**", ...]` | --- ## 🌍 社区与支持 - 🐛 [问题反馈](https://gitee.com/atlisp/atlispext/issues) - 💬 QQ群:[@lisp:CAD应用云](https://qm.qq.com/cgi-bin/qm/qr?k=bgbBl2QIdHP0pOgRjvxddH28A3SXmYxv&jump_from=webapi&authKey=FdfoaEMbQbJ7Fg2QVCZNshGlbB7W5wKeRX63oAzB3k1NohvbfWfEfSyc1AkgdATS) - 🌐 [atlisp.cn](https://atlisp.cn) | [atlisp.org](http://atlisp.org) - 📦 [Gitee @lisp](https://gitee.com/atlisp) | [GitHub @lisp-org](https://github.com/atlisp-org) ## 📄 许可证 MIT License © [@lisp-CAD应用云](https://gitee.com/atlisp/atlispext)