207 CodeBlock 代码块
用途
显示代码:语言标签、可选行号、基础语法着色(internal.Highlight,支持 go、javascript、typescript、python、json、shell、sql),复制、折叠与自动换行切换。
最小示例
chat.CodeBlock(c, "func bow() {}", chat.CodeBlockOptions{Language: "go", LineNumbers: true})签名:func CodeBlock(c *ui.Context, code string, opts CodeBlockOptions) CopyResult
参数
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
Language | string | ""(显示“文本”) | 着色语言;未知语言按纯文本显示。 |
LineNumbers | bool | false | 显示右对齐的行号。 |
Wrap | bool | false | 自动换行的初始状态;关闭时横向滚动。 |
Collapsed | bool | false | 折叠的初始状态。 |
状态
换行开关以 Selection 底色加边框表示开启;复制后按钮在 2 秒内显示对勾“已复制”;折叠时只显示标题栏,展开按钮写明行数。关键字、字符串、数字、类型使用不同颜色,注释同时使用斜体。
事件
Copied():本帧把代码写入了剪贴板。
键盘操作
Tab 依次到换行开关、复制、折叠按钮;Space 或 Enter 触发。
限制
- 着色是逐行的词法着色,不做语法分析;块注释可跨行。
- 不做虚拟化,适合消息中的代码片段,不适合上万行文件。

