~cytrogen/.emacs.d

6b04fb82eaa267ddefb33753ab1518c38a3e289c — Cytrogen a month ago f8d92ba
docs: 添加配置功能介绍文档

- 模块概览:14 个功能模块表格
- 核心功能:补全框架、中英文字体、视觉增强
- 博客工作流:月刊系统、多格式导出、Webmention
- Org-mode 增强:动态 Capture/Refile、自定义 Agenda
- 开发工具:LSP/Tree-sitter、终端、Git
- 阅读:RSS、OPDS 电子书、PDF/EPUB
- 通信:邮件、社交、日历
- 工具:离线词典、学习模式
- 快捷键速查表(按功能分组)
- 安装说明和外部依赖
1 files changed, 306 insertions(+), 0 deletions(-)

A README.org
A README.org => README.org +306 -0
@@ 0,0 1,306 @@
#+title: Cytrogen's Emacs Configuration
#+author: Cytrogen
#+language: zh-CN

模块化的 Emacs 配置,面向中文写作、博客发布、阅读和日常开发。

Emacs 28.1+ | [[file:themes/darcula-theme.el][Darcula 主题]]

* 模块概览

| 模块                | 说明                                      |
|---------------------+-------------------------------------------|
| =core-settings.el=  | 编码、包管理、补全框架、内置功能增强      |
| =ui-theme-fonts.el= | 字体(中英文/Emoji/Nerd Icons)、主题、视觉 |
| =keybindings.el=    | 全局快捷键(70+ 绑定)                   |
| =utils.el=          | Dashboard、文件工具函数                   |
| =pkg-org.el=        | Org-mode:动态 Capture/Refile、Agenda     |
| =pkg-blog.el=       | 博客工作流:月刊、Hexo/Gemini 导出       |
| =pkg-writing.el=    | 写作工具:Hugo 导出、自定义链接类型       |
| =pkg-dev.el=        | 开发:LSP、Tree-sitter、终端、代码工具   |
| =pkg-git.el=        | Git:Magit、diff-hl、timemachine          |
| =pkg-email.el=      | 邮件:mu4e 多账户、OAuth2                 |
| =pkg-reading.el=    | 阅读:RSS、OPDS 电子书、PDF/EPUB         |
| =pkg-social.el=     | 社交:Mastodon、GPG 加密                  |
| =pkg-calendar.el=   | 日历:Google Calendar 双向同步            |
| =pkg-dictionary.el= | 词典:sdcv 离线查词、GoldenDict           |

* 核心功能

** 补全框架

使用现代补全栈:

- =vertico= — 垂直补全界面
- =orderless= — 模糊/乱序匹配
- =consult= — 增强搜索:buffer 切换、ripgrep、大纲跳转
- =embark= — 对补全候选执行上下文操作
- =marginalia= — 补全候选旁显示元信息
- =corfu= — 行内补全弹窗 + 文档预览

** 中文字体支持

精细控制中英文字体分离,确保代码和写作场景各有最佳字体:

| 场景         | 英文              | 中文              |
|--------------+-------------------+-------------------|
| 代码/默认    | JetBrains Mono    | 思源黑体          |
| 写作(变宽) | Source Serif 4    | 思源宋体          |
| 标题         | Open Sans         | Noto Sans SC      |
| 图标         | Symbols Nerd Font | —                 |
| Emoji        | Noto Color Emoji  | —                 |

Org-mode 中代码块、表格、属性强制等宽,正文使用衬线体。

** 视觉增强

- =dimmer= — 非活动窗口变暗(30%)
- =page-break-lines= — =^L= 显示为水平分隔线
- =centered-cursor-mode= — 光标始终居中
- =default-text-scale= — =C-M-== / =C-M--= 全局缩放字号

* 博客工作流

完整的 Capture → Refile → Export 博客发布流程。

** 月刊系统

- =C-c b c= 创建当月月刊文件,使用中国传统历法命名(天干地支 + 月份)
- =C-c b o= 打开当月月刊
- =C-c b r= 将 inbox 条目转入月刊
- =C-c b i= 批量转入所有 inbox 条目

** 多格式导出

- =C-c b e= 导出月刊为 Hexo Markdown(含目录生成)
- =C-c b p= 导出单篇文章
- =C-c b g= 导出为 Gemini 协议格式(=.gmi=)
- =C-c b G= 生成 Gemini Capsule 首页索引

支持 Hexo 块标签(={% note %}=、={% em %}=)和自定义链接类型:

- =[[em:着重内容]]= → 着重号(导出为 ={% em %}=)
- =[[ruby:注音|文字]]= → Ruby 注音标记

** Webmention

发布文章后通知被引用的站点([[https://www.w3.org/TR/webmention/][W3C 标准]]):

- =C-c b w= 发现目标并打开 staging buffer
- =C-c b W= 直接发送(指定 source 和 target)
- =C-c b h= 查看发送历史

独立包:[[https://git.cytrogen.icu/~cytrogen/webmention.el][webmention.el]]

* Org-mode 增强

** 动态 Capture/Refile 系统

Capture 模板和 Refile 目标由 =org-structure.org= 数据驱动,无需修改 elisp 代码即可增减分类:

- 一级标题定义分类(=FILE= + =KEY= 属性)
- 二级标题定义子项(=HEADLINE= + =TEMPLATE= + =KEY=)
- 支持 datetree 目标和自定义模板

=C-c w= 提供两步快速 Refile:先选分类,再选目标。

** 自定义 Agenda 视图

- =r= 前缀:阅读列表(想读 / 在读 / 已读)
- =i= 前缀:收件箱条目
- Agenda 操作:=S= 开始阅读、=F= 完成阅读

** 中文支持

启用 CJK 内联标记(着重号、粗体等无需前后空格)。

* 开发工具

** LSP + Tree-sitter

- =eglot=(内置):自动检测已安装的 LSP 服务器
  - JavaScript/TypeScript: =typescript-language-server=
  - Python: =pylsp=
  - CSS/HTML: =vscode-css/html-language-server=
- =tree-sitter=(内置):语法树精确高亮(level 4),自动 remap 到 =-ts-mode=

** 终端

=eat= 终端模拟器,适配 Darcula 主题 ANSI 调色板(16 色)。=C-c t= 启动。

** 代码编辑

- =symbol-overlay= — =M-i= 高亮当前符号所有出现
- =multiple-cursors= — =C-c n= 前缀多光标编辑
- =move-dup= — =M-S-↑/↓= 移动行,=C-c p d/u= 复制行
- =origami= — =C-c z/Z= 代码折叠
- =avy= — =M-j= 快速跳转到任意字符

** Git

- =magit= — =C-x p m= 打开项目 Git 状态
- =diff-hl= — 边栏显示增删改标记
- =git-timemachine= — 逐版本浏览文件历史
- =ibuffer-vc= — =C-x C-b= 按 VC 项目分组 buffer

* 阅读与信息获取

** RSS

=elfeed= + =elfeed-protocol= 连接 FreshRSS(Fever API)。=C-c f= 启动。

** OPDS 电子书浏览器

内置 OPDS 客户端,浏览 Calibre Content Server 书库:

- =C-c l= 打开 OPDS 浏览器
- 支持搜索、下载、直接在 Emacs 中打开 EPUB/PDF

** PDF / EPUB

- =pdf-tools= — PDF 阅读(支持页码偏移)
- =nov= — EPUB 阅读(olivetti 居中 + 变宽字体)

** URL 阅读模式

=url-handler-mode= 启用后可直接 =C-x C-f= 打开 URL,自动进入阅读模式(olivetti 居中 + 变宽字体)。

* 通信

** 邮件

=mu4e= 多账户配置,支持 OAuth2(Google):

- =C-c e= 启动邮件客户端
- 账户配置从外部文件 =email-accounts.el= 加载
- OAuth token 使用 GPG 加密存储

** 社交

=mastodon.el= 客户端:

- =C-c m= 启动 Mastodon
- GPG 加密凭据存储
- Nerd Icons 美化界面

** 日历

=org-gcal= + =calfw= 实现 Google Calendar 双向同步:

- =C-c g= 打开可视化日历
- =C-c G= 强制同步
- OAuth 凭据从外部文件 =calendar-secrets.el= 加载

* 工具

** 离线词典

- =sdcv=(StarDict)— =C-c k= 快速查词(浮窗)、=C-c K= 详细查词(buffer)
- GoldenDict — =C-c d= 光标处查词、=C-c D= 手动输入查词
- 自动扫描 =~/.stardict/dic/= 下的词典文件

** 学习模式

禁用方向键、Delete 键和鼠标,强制使用 Emacs 原生快捷键:

- 方向键 → 提示使用 =C-p/C-n/C-b/C-f=
- Delete → 提示使用 =C-d/M-d/C-k=
- =C-c h m= 显示移动快捷键速查表

* 快捷键速查

** Org

| 按键      | 功能                   |
|-----------+------------------------|
| =C-c c=   | org-capture            |
| =C-c a=   | org-agenda             |
| =C-c w=   | 快速 Refile            |
| =C-c o=   | 打开 Org 文件          |

** 应用

| 按键      | 功能                   |
|-----------+------------------------|
| =C-c m=   | Mastodon               |
| =C-c f=   | Elfeed (RSS)           |
| =C-c e=   | mu4e (邮件)            |
| =C-c E=   | Elpher (Gemini/Gopher) |
| =C-c l=   | OPDS 电子书浏览器      |
| =C-c t=   | Eat 终端               |
| =C-c g=   | 日历                   |

** 搜索与导航

| 按键        | 功能                   |
|-------------+------------------------|
| =C-c s s=   | consult-line           |
| =C-c s g=   | consult-ripgrep        |
| =C-c s f=   | consult-find           |
| =C-c s o=   | consult-outline        |
| =C-.=       | embark-act             |
| =M-j=       | avy-goto-char-timer    |

** 编辑

| 按键          | 功能                   |
|---------------+------------------------|
| =M-i=         | 高亮当前符号           |
| =C-c n n/p/a= | 多光标 next/prev/all   |
| =M-S-↑/↓=    | 移动行                 |
| =C-c z/Z=    | 折叠/展开              |
| =M-/=        | hippie-expand 补全     |
| =M-Q=        | 反填充段落             |
| =M-Y=        | 浏览 kill ring         |

** 博客

| 按键      | 功能                   |
|-----------+------------------------|
| =C-c b c= | 创建月刊               |
| =C-c b o= | 打开当月月刊           |
| =C-c b e= | 导出月刊 Markdown      |
| =C-c b p= | 导出单篇文章           |
| =C-c b g= | 导出 Gemini            |
| =C-c b w= | Webmention 发现        |
| =C-c b I= | 插入博客图片           |

** 词典

| 按键        | 功能                   |
|-------------+------------------------|
| =C-c k=     | sdcv 快速查词          |
| =C-c K=     | sdcv 详细查词          |
| =C-c d=     | GoldenDict 光标查词    |
| =C-c D=     | GoldenDict 手动输入    |

** 配置

| 按键      | 功能                   |
|-----------+------------------------|
| =C-c i=   | 打开 init.el           |
| =C-c r=   | 重新加载配置           |

* 安装

#+begin_src shell
git clone <repo-url> ~/.emacs.d
#+end_src

首次启动时会提示设置:
1. Org 文件目录路径
2. 博客源文件/导出目录
3. 邮件、日历等凭据(如需使用)

外部依赖:
- 字体:JetBrains Mono、Source Serif 4、思源黑体/宋体、Noto Color Emoji、Symbols Nerd Font
- 工具:=ripgrep=(搜索)、=mu=(邮件索引)、=msmtp=(邮件发送)、=aspell=(拼写检查)
- LSP 服务器(可选):=typescript-language-server=、=pylsp=、=vscode-css-language-server=

* 致谢

许多包选择和配置参考了 [[https://github.com/purcell/emacs.d][Steve Purcell 的 emacs.d]]。

* 许可证

个人配置,自由使用。