如何在Emacs启动时显示Org-mode日程表?

26

我希望Org-mode日程能够在我打开Emacs时自动显示今天的任务。由于org-agenda命令是交互式的,所以似乎不适合此目的。

有没有办法在Emacs启动时显示Org-mode日程?

谢谢,

Conor

7个回答

28

您可以使用after-init-hook在初始化完成后运行一段代码。要在初始化之后运行(org-agenda-list),请使用:

(add-hook 'after-init-hook 'org-agenda-list)

没错,kwatford下面的回答也非常有帮助,但我无法将'(org-agenda-list 1)添加为我的.emacs文件的参数。如果有人能解决这个问题,我会很高兴。 - Conor
4
(add-hook 'after-init-hook '(lambda () (org-agenda-list 1))) - Derek Slager
这个可以运行,但是我如何在启动时聚焦于“Org Agenda”缓冲区呢?(我正在使用tabbar) - lecodesportif
好的,我明白了。正在添加答案。 - mbork
1
为了让emacsclient正常工作,您可以使用focus-in-hook而不是after-init-hook。为了显示您的日程安排项目,您应该在设置hook之前设置您的日程安排文件/目录,(setq org-agenda-files (quote ("agenda-directory")))。 - dalanicolai
如果你使用emacsclientserver-after-make-frame-hook会完美地工作。 - Hax Guru

10
这是我使用的方法(在.emacs中):
(setq inhibit-splash-screen t)
(org-agenda-list)
(delete-other-windows)

没有第一行,启动画面会“遮挡”日程表;没有第三行,临时缓冲区仍然可见。

1
对于emacsclient,我们可以使用emacsclient -t --eval "(org-agenda-list)" "(delete-other-windows)"将其制作为functionalias - yuxuan
这会限制编辑器的其他用途,如果您要求emacs打开一个文件会发生什么? - andygavin

5

除了使用钩子(hook)之外,还可以设置initial-buffer-choice变量。如果有多个缓冲区或者在钩子上有很多函数时,这种方法尤其有用。该变量上的函数需要返回一个缓冲区。可能会有这样一个简单的函数:

(setq initial-buffer-choice (lambda ()
    (org-agenda-list 1)
    (get-buffer "*Org Agenda*")))    

1
这个还显示着草稿缓冲区。(emacs 26.1) - krokodil
@krokodil 这不是很理想吗?这样当emacs遇到其他参数时,它会表现得很好。 - andygavin

3
尝试使用(org-agenda-list)命令。如果只需要今天的日程,请使用(org-agenda-list 1)
当然,apropos也是您的好朋友。C-h C-a org-agenda(或其他命令)将向您显示有关该命令的有用信息。

1

我有一个bash别名来打开带有Agenda的emacs:

alias org='/usr/bin/emacs --funcall org-agenda-list &'

祝使用愉快。


1

虽然不是在启动时,但我会保持Emacs运行,因此需要采用不同的方法。

(require 'midnight)
(midnight-delay-set 'midnight-delay "7:30am")
(add-hook 'midnight-hook 'org-agenda-list)

感谢https://dev59.com/GW865IYBdhLWcg3wYNnj#14947354提供的帮助。


0
你可以使用server-after-make-frame-hook在Emacs守护进程创建客户端时运行任何命令。
(use-hook 'server-after-make-frame-hook 'org-agenda-list)

这对我来说非常完美,因为每当我打开emacsclient时,org日程表就会出现,这正是我想要的。

如果需要的话,您还可以查看以下挂钩- https://www.gnu.org/software/emacs/manual/html_node/elisp/Standard-Hooks.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接