2014-09-19 42 views
2

我想要一個快捷方式將TODO的狀態直接更改爲DONE(並返回),並將CLOSED時間標記摺疊起來,當我處於(不像第一個星號之前要求的速度鍵)。Emacs組織模式:快速將TODO標記爲完成

目前我有兩個選擇:

  1. 抄送的Ct dTAB(與org-use-fast-todo-selection設置爲td是我DONE狀態快捷和TAB隱藏子樹),

  2. S-右TAB(使用org-shiftright,DONETODO之後的第一個狀態)。

能否請你幫我這個綁定到單個快捷鍵像C-C C-d。請注意我有更多的國家TODODONE但這個快捷方式應該只是在這些之間切換。

獎勵積分:額外的命令,該命令還會在與上一個任務相同的級別的下一行開始一個新的TODO項目。

非常感謝!

+0

看一看[WORF(HTTP:// ABO血型ABO。github.io/worf/README.html)。 'cwd'將狀態改爲完成,'wta'將添加一個新的TODO。 – 2014-09-19 09:04:39

+0

如果啓用「速度鍵」,則在任務的第一列中也會有「t d」。 – fniessen 2014-09-19 13:21:57

+1

你最好使用像'C-c d'這樣的'C-c '綁定,因爲所有這些綁定都是爲最終用戶保留的,而'C-c C-d'可能最終會與別的東西發生衝突。 – phils 2014-09-19 23:19:12

回答

4

不知道你的「時間標籤」的意思,但根據你所列出的工作流程,下面的命令應該做你想要什麼:

(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具有內置命令。您可以通過執行

  • 章˚Forg-insert-todo-headingRET
  • 章˚Forg-insert-todo-heading-respect-contentRET
+2

爲了允許建議的功能可以工作的更廣泛的位置,(組織後退標題t)而不是(開始行)如何? – lawlist 2014-09-19 22:40:47

+0

作品!謝謝! – user673592 2014-09-20 08:49:02

3

簡單的切換命令他們閱讀起來可能看起來像下面

(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>