平时 capture
收集时,未处理的条目统一放到 inbox.org
,格式为:
* WAITING 条目一
* WAITING 条目二
...
到一定时间时,org-refile
到相应文件內,比如 todo.org
,条目相应变为:
* TODO 条目一
* TODO 条目二
在 refile
的同时可以把 WAITING
改变为 TODO
,然后放入再指定文件吗?
请教大神,谢谢。
平时 capture
收集时,未处理的条目统一放到 inbox.org
,格式为:
* WAITING 条目一
* WAITING 条目二
...
到一定时间时,org-refile
到相应文件內,比如 todo.org
,条目相应变为:
* TODO 条目一
* TODO 条目二
在 refile
的同时可以把 WAITING
改变为 TODO
,然后放入再指定文件吗?
请教大神,谢谢。
对大神来说,emacs
的世界没有「可以吗」这个说法,只有「怎么做」,所以标题改一下。
大神你太狠了,这都能发现。 抄了这段代码:
;; Create hook to auto-refile when todo is changing state
(add-hook 'org-after-todo-state-change-hook 'dk/refile-todo 'append)
(defun dk/refile-todo()
(if (equal org-state "TODO")
(dk/refile-to "~/org/todo.org" "Todo")
(if (equal org-state "SOMEDAY")
(dk/refile-to "~/org/inbox.org" "Inbox"))))
(defun dk/refile-to (file headline)
"Move current headline to specified location"
(let ((pos (save-excursion
(find-file file)
(org-find-exact-headline-in-buffer headline))))
(org-refile nil nil (list headline file nil pos)))
(switch-to-buffer (current-buffer)))
暂时够用,感谢。
事实上我只是把你的问题放到了 Google,看第一个挺相关就贴给你了
虽然如此,也是很感谢的了。
上述代码经测试,大体上可以用了,不过有一个问题,假如我现在在 inbox.org
文件中 C-c C-t
处理一个条目为 TODO
状态,条目可以转到 todo.org
中,但同时前窗口也会切换至 todo.org
,也就是当前激活的窗口,是移动条目的目标窗口,怎么才能不让窗口切换,一直停在源窗口內呢?
条目多的话,要不停地切回源窗口。
不吝赐教,感谢。
学一下elisp吧,之后你会发现,很多小问题就是几行代码的事情,自己hack的过程就很爽~
我之前的言下之意是可能你需要学习一下怎么更好的搜索
我猜其实 (switch-to-buffer (current-buffer))
就是为了切换回去的,试了下我这边 (org-refile nil nil (list headline file nil pos))
会提示
Refile to "Test" in file ~/org/inbox.org: done
apply: Wrong number of arguments: (0 . 0), 3
盲猜可能函数参数改了,你需要看看修改下。