在 Calendar 中高亮有安排的日期

发布于 2025-04-13 03:49:04 字数 2031 浏览 7 评论 0

org-mode agenda 有一个功能,能够在 Emacs Calendar 上显示哪些日期有约会. 不过可惜,该功能默认并没有被开启。
我也是在浏览 Emacs 主题截图时偶然发现的。

在下面的屏幕截图中,你可以看到 Calendar 中有安排的日子都被高亮起来了。

配置很简单。

第一步,设置 calendar-mark-diary-entries-flag

(setq calendar-mark-diary-entries-flag t)

然后创建 $HOME/diary 文件,并添加下面一行:

%%(org-diary)

之后在 Emacs 中用 org-agenda 打开 agenda view 然后按 c 打开 calendar;你会发现所有重要的日期都被高亮了。
当然,执行

M-x calendar

效果一样,也能打开 calendar.

你还能够反过来操作 - 要查看某个高亮的日期有哪些安排,只需要将光标移到特定的日期然后按下 c , Emacs 就会打开 org-mode agenda view 并将光标放到合适的地方。

Using with appointments (appt)

如果你在使用 org-mode 的同时还使用 appointments 的话,那就要小心了,调用 (appt-activate 1) 会同时运行 diary
这样的话,若在 Emacs 的配置文件中加了这一句话,那么在 Emacs 启动时就会弹出 diary 窗口。
我觉得这样很不好,为了避开这种行为,需要设置 appt-display-diary 变量。

下面是我的 appointments 配置:

(add-hook 'org-finalize-agenda-hook
  (lambda ()
    (setq appt-message-warning-time 10        ;; warn 10 min in advance
          appt-display-diary nil              ;; do not display diary when (appt-activate) is called
          appt-display-mode-line t            ;; show in the modeline
          appt-display-format 'window         ;; display notification in window
          calendar-mark-diary-entries-flag t) ;; mark diary entries in calendar
    (org-agenda-to-appt)                      ;; copy all agenda schedule to appointments
    (appt-activate 1)))                       ;; active appt (appointment notification)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

夜访吸血鬼

暂无简介

文章
评论
37 人气
更多

推荐作者

mb_gz9oIeVV

文章 0 评论 0

佚名

文章 0 评论 0

17780639550

文章 0 评论 0

梦幻的味道

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。