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]]。
+
+* 许可证
+
+个人配置,自由使用。