我希望Org-mode日程能够在我打开Emacs时自动显示今天的任务。由于org-agenda命令是交互式的,所以似乎不适合此目的。
有没有办法在Emacs启动时显示Org-mode日程?
谢谢,
Conor
您可以使用after-init-hook
在初始化完成后运行一段代码。要在初始化之后运行(org-agenda-list)
,请使用:
(add-hook 'after-init-hook 'org-agenda-list)
.emacs
中):(setq inhibit-splash-screen t)
(org-agenda-list)
(delete-other-windows)
emacsclient -t --eval "(org-agenda-list)" "(delete-other-windows)"
将其制作为function
或alias
。 - yuxuan除了使用钩子(hook)之外,还可以设置initial-buffer-choice
变量。如果有多个缓冲区或者在钩子上有很多函数时,这种方法尤其有用。该变量上的函数需要返回一个缓冲区。可能会有这样一个简单的函数:
(setq initial-buffer-choice (lambda ()
(org-agenda-list 1)
(get-buffer "*Org Agenda*")))
(org-agenda-list)
命令。如果只需要今天的日程,请使用(org-agenda-list 1)
。apropos
也是您的好朋友。C-h C-a org-agenda
(或其他命令)将向您显示有关该命令的有用信息。我有一个bash别名来打开带有Agenda的emacs:
alias org='/usr/bin/emacs --funcall org-agenda-list &'
祝使用愉快。
虽然不是在启动时,但我会保持Emacs运行,因此需要采用不同的方法。
(require 'midnight)
(midnight-delay-set 'midnight-delay "7:30am")
(add-hook 'midnight-hook 'org-agenda-list)
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
(add-hook 'after-init-hook '(lambda () (org-agenda-list 1)))
- Derek Slageremacsclient
,server-after-make-frame-hook
会完美地工作。 - Hax Guru