我希望有一条快捷方式可以将TODO
的状态直接更改为DONE
(并返回)CLOSED
时间标记折叠起来,当我' m在线上的任何位置(不像速度键需要在第一个星号之前)。
目前我有两个选择:
Cc Ct d TAB (org-use-fast-todo-selection
设置为t
, d 是我的{ {1}}状态快捷方式和 TAB 隐藏子树),或
S-right TAB (使用DONE
,org-shiftright
是DONE
之后的第一个州。< / p>
请你帮我把它绑定到像 C-c C-d 这样的单一快捷方式。请注意,我的状态多于TODO
和TODO
,但此快捷方式也应在这些状态之间切换。
奖励积分:此附加命令也会在与上一个任务相同级别的下一行开始新的DONE
项目。
非常感谢!
答案 0 :(得分:4)
不确定&#34;时间标记&#34;的含义,但根据您列出的工作流程,以下命令应该可以执行您想要的操作:
(defun org-toggle-todo-and-fold ()
(interactive)
(save-excursion
(org-back-to-heading t) ;; Make sure command works even if point is
;; below target heading
(cond ((looking-at "\*+ TODO")
(org-todo "DONE")
(hide-subtree))
((looking-at "\*+ DONE")
(org-todo "TODO")
(hide-subtree))
(t (message "Can only toggle between TODO and DONE.")))))
(define-key org-mode-map (kbd "C-c C-d") 'org-toggle-todo-and-fold)
至于在与当前任务相同的级别上插入新的TODO
项,org-mode
具有内置命令。你可以通过
org-insert-todo-heading
RET org-insert-todo-heading-respect-content
RET 答案 1 :(得分:4)
简单的切换命令可能如下所示
(defun my-org-todo-toggle ()
(interactive)
(let ((state (org-get-todo-state))
post-command-hook)
(if (string= state "TODO")
(org-todo "DONE")
(org-todo "TODO"))
(run-hooks 'post-command-hook)
(org-flag-subtree t)))
(define-key org-mode-map (kbd "C-c C-d") 'my-org-todo-toggle)
post-command-hook
有点棘手,但是是必需的,否则在命令之后添加(和显示)注释,这会使时间日志部分展开。
要开始新的TODO项目,您可以查看现有的org-insert-todo-heading
(绑定到<M-S-return>
)