文档

自定义主题开发指南

Codes 编辑器支持通过 CSS 变量自定义主题配色。你可以基于内置的深色/浅色主题进行修改,或从零创建全新风格。本文介绍主题系统的结构、变量命名与调试方法。

一、主题文件结构

每个主题是一个独立的 CSS 文件,放在 themes/ 目录下。编辑器通过切换 <body>data-theme 属性来加载不同主题。

/* themes/dark.css */
[data-theme="dark"] {
    --editor-bg: #0a1714;
    --editor-fg: #e8f5f0;
    --line-number: #4a6b62;
    --cursor: #34d399;
    --selection: rgba(52, 211, 153, 0.25);
    --keyword: #ff79c6;
    --function: #8be9fd;
    --string: #f1fa8c;
    --comment: #6272a4;
    --number: #bd93f9;
}

二、核心变量说明

  • --editor-bg — 编辑器背景色
  • --editor-fg — 默认文字颜色
  • --line-number — 行号颜色
  • --cursor — 光标颜色
  • --selection — 选区背景色
  • --keyword — 关键字(if, for, return)
  • --function — 函数名
  • --string — 字符串字面量
  • --comment — 注释
  • --number — 数字常量

三、创建新主题的步骤

按照以下流程即可创建并启用自定义主题:

/* 1. 复制现有主题作为模板 */
cp themes/dark.css themes/midnight.css

/* 2. 修改配色值 */
[data-theme="midnight"] {
    --editor-bg: #0d0d1a;
    --editor-fg: #d4d4e0;
    --keyword: #c792ea;
    --function: #82aaff;
    --string: #c3e88d;
    --comment: #676e95;
    --number: #f78c6c;
}

/* 3. 在设置面板中注册主题名称 */
/* 主题列表读取 themes/ 目录下的文件名 */
建议先用浏览器的开发者工具实时调试 CSS 变量,确认配色后再写入文件。

四、语法高亮 Token 映射

编辑器将代码解析为 token,每个 token 带有类型标记。主题只需为类型指定颜色:

/* token 到 CSS 类的映射 */
.token.keyword    { color: var(--keyword); }
.token.function   { color: var(--function); }
.token.string     { color: var(--string); }
.token.comment    { color: var(--comment); font-style: italic; }
.token.number     { color: var(--number); }
.token.operator   { color: var(--editor-fg); }
.token.type       { color: var(--keyword); }

五、UI 元素主题化

除了编辑器区域,侧边栏、状态栏与弹窗也使用 CSS 变量控制外观:

  • --sidebar-bg — 文件树背景
  • --sidebar-fg — 文件树文字
  • --statusbar-bg — 底部状态栏背景
  • --panel-bg — 输出面板背景
  • --border — 分割线颜色
  • --accent — 强调色(按钮、高亮指示器)

六、跟随系统偏好

使用 prefers-color-scheme 媒体查询,可在系统切换深浅色时自动匹配:

@media (prefers-color-scheme: light) {
    :root {
        --editor-bg: #fafafa;
        --editor-fg: #2d2d2d;
        --keyword: #d73a49;
        --function: #6f42c1;
        --string: #032f62;
        --comment: #6a737d;
    }
}
在设置中勾选「跟随系统」后,编辑器会监听系统主题变化并自动切换。