From 5ef2ffca6bde1e7a3b3e998449e6848a1d05c03a Mon Sep 17 00:00:00 2001 From: HallowDem <75336799+Cytrogen@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:54:44 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E9=94=AE=E5=92=8C=20Dashboard=20=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 快捷键新增: - C-c f: 打开 elfeed (RSS 阅读器) - C-c e: 打开 mu4e (邮件客户端) - C-c b m: 导出月刊 (别名) - C-c b i: 插入博客图片 Dashboard 重构: - 分类整理快捷键速查表 - 添加 GTD 工作流程说明 - 添加博客写作流程指南 - 添加常用 M-x 命令参考 --- config/keybindings.el | 5 +- config/utils.el | 135 ++++++++++++++++++++++++++++++------------ 2 files changed, 101 insertions(+), 39 deletions(-) diff --git a/config/keybindings.el b/config/keybindings.el index f3d18b8969f484ce49169411e6eed4d764985f78..5670aaee3e45b8b7357d9fa4f8decbe5704338b3 100644 --- a/config/keybindings.el +++ b/config/keybindings.el @@ -25,6 +25,8 @@ ;; Application Shortcuts ;; Quick access to frequently used functions (global-set-key (kbd "C-c m") 'mastodon) +(global-set-key (kbd "C-c f") 'elfeed) ; RSS feeds +(global-set-key (kbd "C-c e") 'mu4e) ; Email ;; File and Navigation Shortcuts ;; File operations and navigation @@ -35,12 +37,13 @@ ;; Shortcuts for custom utility functions ;; Blog Workflow Shortcuts -;; Monthly blog post management (global-set-key (kbd "C-c b c") 'my/blog-create-monthly) (global-set-key (kbd "C-c b o") 'my/blog-open-current-monthly) (global-set-key (kbd "C-c b e") 'my/blog-export-monthly) +(global-set-key (kbd "C-c b m") 'my/blog-export-monthly) ; alias (global-set-key (kbd "C-c b p") 'my/blog-export-post) (global-set-key (kbd "C-c b n") 'my/blog-create-post-from-entry) +(global-set-key (kbd "C-c b i") 'my/blog-insert-image) (provide 'keybindings) ;;; keybindings.el ends here \ No newline at end of file diff --git a/config/utils.el b/config/utils.el index 15ede8cc794e97f6f8b9f48e0f62f57580663c7a..d2f6ae55a9a931f852eb6a4a3e02deef232726a8 100644 --- a/config/utils.el +++ b/config/utils.el @@ -38,44 +38,103 @@ (let ((inhibit-read-only t)) (erase-buffer) - ;; Header - (insert "#+TITLE: Cytrogen 的个人领地\n") + ;; Header + (insert "#+TITLE: Emacs 使用指南\n") (insert "#+STARTUP: showall\n\n") - (insert "\n") - (insert "Welcome back, Cytrogen.\n") - (insert "------------------------------------\n\n") - - ;; GTD Intro - (insert "* GTD 工作流指南\n\n") - (insert "1. Capture(收集): 大脑用来思考,不是用来记事的。\n") - (insert " 任何想法、任务、灵感,第一时间通过 Capture 放入 Inbox。\n") - (insert " - [C-c c] 唤起 Capture 面板\n") - (insert " - [C-c C-c] 确认保存\n") - (insert " - [C-c C-k] Abort (放弃/取消)\n\n") - - (insert "2. Process(整理): 清空 Inbox。\n") - (insert " 每天/每周定期检查 Inbox,将任务移动到具体的项目或归档。\n") - (insert " - [C-c w] Quick Refile (快速移动条目)\n\n") - - (insert "3. Do(执行): 专注当下。\n") - (insert " 通过 Agenda 查看今日待办。\n") - (insert " - [C-c a] 打开 Agenda 视图\n\n") - - ;; Keybindings Cheatsheet - (insert "* 常用命令\n\n") - (insert "| 快捷键 | 描述 | 命令 |\n") - (insert "|---|---|---|\n") - (insert "| C-c c | 快速记录 | org-capture |\n") - (insert "| C-c a | 日程/代办 | org-agenda |\n") - (insert "| C-c w | 快速归档 | my/quick-refile |\n") - (insert "| C-c o | 打开笔记 | my/open-org-file |\n") - (insert "| C-c m | 长毛象 | mastodon |\n") - (insert "| C-c i | 编辑配置 | my/open-init-file |\n") - (insert "| C-c r | 重载配置 | my/reload-init-file |\n") - + (insert "Welcome back, Cytrogen.\n\n") + + ;; ══════════════════════════════════════════════════════════════ + ;; Quick Reference - 快捷键速查 + ;; ══════════════════════════════════════════════════════════════ + (insert "* 快捷键速查\n\n") + + (insert "** 笔记与任务 (Org-mode)\n\n") + (insert "| 快捷键 | 功能 | 说明 |\n") + (insert "|-----------+--------------+--------------------------------|\n") + (insert "| =C-c c= | 快速记录 | 打开 Capture 面板,选择模板 |\n") + (insert "| =C-c a= | 日程视图 | 查看待办事项和日历 |\n") + (insert "| =C-c w= | 快速归档 | 将当前条目移动到指定位置 |\n") + (insert "| =C-c o= | 打开笔记 | 浏览并打开 Org 文件 |\n") + (insert "| =C-c C-c= | 确认 | 在 Capture 中保存条目 |\n") + (insert "| =C-c C-k= | 取消 | 在 Capture 中放弃当前编辑 |\n\n") + + (insert "** 博客发布\n\n") + (insert "| 快捷键 | 功能 | 说明 |\n") + (insert "|-------------+------------+--------------------------------|\n") + (insert "| =C-c b c= | 创建月刊 | 创建新的月刊文件 |\n") + (insert "| =C-c b o= | 打开月刊 | 打开当前月刊 |\n") + (insert "| =C-c b m= | 导出月刊 | 将当前月刊导出为 Markdown |\n") + (insert "| =C-c b p= | 导出文章 | 导出 posts/ 目录下的单篇文章 |\n") + (insert "| =C-c b n= | 条目转文章 | 将笔记条目转为独立博客文章 |\n") + (insert "| =C-c b i= | 插入图片 | 插入博客图片链接 |\n\n") + + (insert "** 阅读与订阅\n\n") + (insert "| 快捷键 | 功能 | 说明 |\n") + (insert "|-----------+------------+--------------------------------|\n") + (insert "| =C-c f= | RSS 阅读器 | 打开 elfeed 查看订阅 |\n") + (insert "| =C-c e= | 邮件 | 打开 mu4e 邮件客户端 |\n\n") + (insert "OPDS 浏览器: =M-x my/opds-browse= 浏览 Calibre 书库\n\n") + + (insert "** 社交\n\n") + (insert "| 快捷键 | 功能 | 说明 |\n") + (insert "|-----------+------------+--------------------------------|\n") + (insert "| =C-c m= | Mastodon | 打开长毛象客户端 |\n\n") + + (insert "** 系统管理\n\n") + (insert "| 快捷键 | 功能 | 说明 |\n") + (insert "|-----------+------------+--------------------------------|\n") + (insert "| =C-c i= | 编辑配置 | 打开 init.el 配置文件 |\n") + (insert "| =C-c r= | 重载配置 | 重新加载 Emacs 配置 |\n\n") + + ;; ══════════════════════════════════════════════════════════════ + ;; Workflows - 工作流程 + ;; ══════════════════════════════════════════════════════════════ + (insert "* 工作流程\n\n") + + (insert "** GTD 三步法\n\n") + (insert "#+begin_quote\n") + (insert "大脑用来思考,不是用来记事的。\n") + (insert "#+end_quote\n\n") + (insert "1. *Capture(收集)* → =C-c c=\n") + (insert " 任何想法、任务、灵感,第一时间放入 Inbox。\n\n") + (insert "2. *Process(整理)* → =C-c w=\n") + (insert " 定期清空 Inbox,将条目归档到具体项目。\n\n") + (insert "3. *Do(执行)* → =C-c a=\n") + (insert " 通过 Agenda 查看今日待办,专注当下。\n\n") + + (insert "** 博客写作流程\n\n") + (insert "*** 记录灵感\n") + (insert "=C-c c= → =m= (Monthly 子菜单) → 选择分类:\n") + (insert "- =ma= 商业与社会\n") + (insert "- =mb= 心理与关系\n") + (insert "- =mc= 技术与创造\n") + (insert "- =md= 生活与文娱\n\n") + + (insert "*** 发布内容\n") + (insert "- 月刊: 在月刊文件中按 =C-c b m= 导出\n") + (insert "- 单篇: 在 posts/ 文章中按 =C-c b p= 导出\n") + (insert "- 转换: 光标在条目上按 =C-c b n= 创建独立文章\n\n") + + ;; ══════════════════════════════════════════════════════════════ + ;; Useful Commands - 常用命令 + ;; ══════════════════════════════════════════════════════════════ + (insert "* 常用命令 (M-x)\n\n") + (insert "** 博客\n") + (insert "- =my/blog-create-monthly= - 创建新月刊\n") + (insert "- =my/blog-open-current-monthly= - 打开当前月刊\n\n") + (insert "** 阅读\n") + (insert "- =my/opds-browse= - 浏览 Calibre OPDS 书库\n") + (insert "- =elfeed-update= - 更新 RSS 订阅\n\n") + (insert "** 系统\n") + (insert "- =my/show-dashboard= - 显示此帮助页面\n") + (insert "- =my/reload-org-structure= - 重载 Org 结构配置\n") + (insert "- =my/check-gpg-status= - 检查 GPG 状态\n") + (insert "- =my/fix-epa-issues= - 修复 GPG/EPA 问题\n\n") + ;; Footer - (insert "\n「保持简单,保持流动。」\n") + (insert "-----\n") + (insert "/保持简单,保持流动。/\n") (org-mode) (when (fboundp 'my/org-mode-visual-setup) @@ -88,14 +147,14 @@ (forward-line 1)))) (switch-to-buffer buf) - + ;; 延迟定位到第一行可见内容 - (run-with-idle-timer 0.1 nil + (run-with-idle-timer 0.1 nil (lambda () (when (and (get-buffer "*Cytrogen's Home*") (string= (buffer-name (current-buffer)) "*Cytrogen's Home*")) (goto-char (point-min)) - (while (and (not (eobp)) + (while (and (not (eobp)) (get-char-property (point) 'invisible)) (forward-line 1)))))))