繁体   English   中英

Emacs Org-mode:快速将TODO标记为DONE

[英]Emacs Org-mode: Quickly mark TODO as DONE

我希望有一条快捷方式可以将TODO的状态直接更改为DONE (和返回),当我在线上的任何位置时, CLOSED时间标签折叠(不像速度键需要在第一个之前)星号)。

目前我有2个选择:

  1. Cc Ct d TAB (将org-use-fast-todo-selection设置为td为我的DONE状态快捷方式, TAB隐藏子树), 或者

  2. S-right TAB (使用org-shiftrightDONETODO之后的第一个状态)。

你能帮我把它绑定到像Cc Cd这样的单一快捷方式吗? 请注意我有比TODODONE更多的状态,但是这个快捷方式也应该在这些之间切换。

奖励积分 :附加命令,它也会在与上一个任务相同级别的下一行开始新的TODO项目。

非常感谢你!

不确定“时间标记”的含义,但根据您列出的工作流程,以下命令应该执行您想要的操作:

(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具有内置命令。 你可以通过这样做来阅读它们

  • Ch f org-insert-todo-heading RET
  • Ch f org-insert-todo-heading-respect-content RET

一个简单的切换命令可能如下所示

(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 (绑定到<MS-return>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM