dots

my dotfiles
git clone https://tilde.team/~marisa/repo/dots.git
Log | Files | Refs

commit 1a0d29a74345dd3fc4c1b2c55032fc79cb69c7ba
parent 76d6da531e9d49b0ff9499862d5c41e214f81efa
Author: mokou <mokou@posteo.de>
Date:   Tue,  6 Oct 2020 10:58:01 +0200

Redo org configuration

Diffstat:
Mdot_doom.d/config.el | 312+++++++------------------------------------------------------------------------
1 file changed, 27 insertions(+), 285 deletions(-)

diff --git a/dot_doom.d/config.el b/dot_doom.d/config.el @@ -58,38 +58,25 @@ (after! org (add-to-list 'org-modules 'org-habit) (setq-default org-directory "~/code/personal/org") - (setq-default org-default-notes-file "~/code/personal/org/capture.org") + (setq-default org-default-notes-file "~/code/personal/org/inbox.org") (setq-default org-todo-keywords - (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") - (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING")))) + (quote ((sequence "TODO(t)" "DONE(d)" "WAITING(w@/!)")))) (setq-default org-todo-keyword-faces (quote (("TODO" :foreground "tomato" :weight bold) - ("NEXT" :foreground "royal blue" :weight bold) ("DONE" :foreground "forest green" :weight bold) - ("WAITING" :foreground "chocolate" :weight bold) - ("HOLD" :foreground "orchid" :weight bold) - ("CANCELLED" :foreground "yellow" :weight bold) - ("MEETING" :foreground "gold" :weight bold) - ("PHONE" :foreground "orange" :weight bold)))) + ("WAITING" :foreground "chocolate" :weight bold)))) (setq org-capture-templates - (quote (("t" "todo" entry (file "~/code/personal/org/capture.org") + (quote (("t" "todo" entry (file "~/code/personal/org/inbox.org") "* TODO %?\n%U\n" :clock-in t :clock-resume t) - ("r" "respond" entry (file "~/code/personal/org/capture.org") - "* STRT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t) - ("n" "note" entry (file "~/code/personal/org/capture.org") - "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t) - ("w" "org-protocol" entry (file "~/code/personal/org/capture.org") - "* TODO Review %c\n%U\n" :immediate-finish t) - ("m" "meeting" entry (file "~/code/personal/org/capture.org") - "* PROJ Meeting with %? :MEETING:\n%U" :clock-in t :clock-resume t)))) - (setq org-refile-targets (quote ((nil :maxlevel . 9) - (org-agenda-files :maxlevel . 9)))) + ("n" "note" entry (file "~/code/personal/org/inbox.org") + "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t)))) + (setq org-refile-targets '((nil :maxlevel . 9) + (org-agenda-files :maxlevel . 9))) (add-to-list 'ivy-completing-read-handlers-alist '(org-capture-refile . completing-read-default)) (org-clock-persistence-insinuate) (setq org-clock-in-switch-to-state 'cf/clock-in-to-next) - (setq org-drawers (quote ("PROPERTIES" "LOGBOOK"))) (setq org-clock-into-drawer t) (setq org-clock-out-remove-zero-time-clocks t) (setq org-clock-out-when-done t) @@ -99,85 +86,33 @@ (setq org-agenda-dim-blocked-tasks nil) (setq org-agenda-compact-blocks t) (setq org-agenda-custom-commands - (quote (("N" "Notes" tags "NOTE" - ((org-agenda-overriding-header "Notes") - (org-tags-match-list-sublevels t))) - (" " "Agenda" - ((agenda "" nil) - (tags "REFILE" - ((org-agenda-overriding-header "Tasks to Refile") - (org-tags-match-list-sublevels nil))) - (tags-todo "-CANCELLED/!" - ((org-agenda-overriding-header "Stuck Projects") - (org-agenda-skip-function 'cf/skip-non-stuck-projects) - (org-agenda-sorting-strategy - '(category-keep)))) - (tags-todo "-HOLD-CANCELLED/!" - ((org-agenda-overriding-header "Projects") - (org-agenda-skip-function 'cf/skip-non-projects) - (org-tags-match-list-sublevels 'indented) - (org-agenda-sorting-strategy - '(category-keep)))) - (tags-todo "-CANCELLED/!NEXT" - ((org-agenda-overriding-header (concat "Project Next Tasks" - (if cf/hide-scheduled-and-waiting-next-tasks - "" - " (including WAITING and SCHEDULED tasks)"))) - (org-agenda-skip-function 'cf/skip-projects-and-habits-and-single-tasks) - (org-tags-match-list-sublevels t) - (org-agenda-todo-ignore-scheduled cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-deadlines cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-with-date cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-sorting-strategy - '(todo-state-down effort-up category-keep)))) - (tags-todo "-REFILE-CANCELLED-WAITING-HOLD/!" - ((org-agenda-overriding-header (concat "Project Subtasks" - (if cf/hide-scheduled-and-waiting-next-tasks - "" - " (including WAITING and SCHEDULED tasks)"))) - (org-agenda-skip-function 'cf/skip-non-project-tasks) - (org-agenda-todo-ignore-scheduled cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-deadlines cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-with-date cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-sorting-strategy - '(category-keep)))) - (tags-todo "-REFILE-CANCELLED-WAITING-HOLD/!" - ((org-agenda-overriding-header (concat "Standalone Tasks" - (if cf/hide-scheduled-and-waiting-next-tasks - "" - " (including WAITING and SCHEDULED tasks)"))) - (org-agenda-skip-function 'cf/skip-project-tasks) - (org-agenda-todo-ignore-scheduled cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-deadlines cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-with-date cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-sorting-strategy - '(category-keep)))) - (tags-todo "-CANCELLED+WAITING|HOLD/!" - ((org-agenda-overriding-header (concat "Waiting and Postponed Tasks" - (if cf/hide-scheduled-and-waiting-next-tasks - "" - " (including WAITING and SCHEDULED tasks)"))) - (org-agenda-skip-function 'cf/skip-non-tasks) - (org-tags-match-list-sublevels nil) - (org-agenda-todo-ignore-scheduled cf/hide-scheduled-and-waiting-next-tasks) - (org-agenda-todo-ignore-deadlines cf/hide-scheduled-and-waiting-next-tasks))) - (tags "-REFILE/" - ((org-agenda-overriding-header "Tasks to Archive") - (org-agenda-skip-function 'cf/skip-non-archivable-tasks) - (org-tags-match-list-sublevels nil)))) - nil))))) + (quote ((" " "Agenda" + ((agenda "" nil) + (tags "REFILE" + ((org-agenda-overriding-header "Tasks to Refile") + (org-tags-match-list-sublevels nil))) + (tags-todo "-CANCELLED+WAITING|HOLD/!" + ((org-agenda-overriding-header (concat "Waiting Tasks")) + (org-agenda-skip-function 'cf/skip-non-tasks) + (org-tags-match-list-sublevels nil) + (org-agenda-todo-ignore-scheduled cf/hide-scheduled-and-waiting-next-tasks) + (org-agenda-todo-ignore-deadlines cf/hide-scheduled-and-waiting-next-tasks))) + (tags "-REFILE/" + ((org-agenda-overriding-header "Tasks to Archive") + (org-agenda-skip-function 'cf/skip-non-archivable-tasks) + (org-tags-match-list-sublevels nil)))) + nil))))) (map! :map global-map :leader "a" 'org-agenda) +(defvar cf/hide-scheduled-and-waiting-next-tasks t) + (defun cf/clock-in-to-next (kw) (when (not (and (boundp 'org-capture-mode) org-capture-mode)) (cond - ((and (member (org-get-todo-state) (list "TODO")) + ((and (member (org-get-todo-state) (list "WAITING")) (cf/is-task-p)) - "NEXT") - ((and (member (org-get-todo-state) (list "NEXT")) - (cf/is-project-p)) "TODO")))) (defun cf/find-project-task () @@ -220,97 +155,6 @@ (setq has-subtask t)))) (and is-a-task (not has-subtask))))) -(defun cf/is-project-subtree-p () - (let ((task (save-excursion (org-back-to-heading 'invisible-ok) - (point)))) - (save-excursion - (cf/find-project-task) - (if (equal (point) task) - nil - t)))) - -(defun cf/is-subproject-p () - (let ((is-subproject) - (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1))) - (save-excursion - (while (and (not is-subproject) (org-up-heading-safe)) - (when (member (nth 2 (org-heading-components)) org-todo-keywords-1) - (setq is-subproject t)))) - (and is-a-task is-subproject))) - -(defun cf/list-sublevels-for-projects-indented () - (if (marker-buffer org-agenda-restrict-begin) - (setq org-tags-match-list-sublevels 'indented) - (setq org-tags-match-list-sublevels nil)) - nil) - -(defun cf/list-sublevels-for-projects () - (if (marker-buffer org-agenda-restrict-begin) - (setq org-tags-match-list-sublevels t) - (setq org-tags-match-list-sublevels nil)) - nil) - -(defvar cf/hide-scheduled-and-waiting-next-tasks t) - - -(defun cf/toggle-next-task-display () - (interactive) - (setq cf/hide-scheduled-and-waiting-next-tasks (not cf/hide-scheduled-and-waiting-next-tasks)) - (when (equal major-mode 'org-agenda-mode) - (org-agenda-redo)) - (message "%s WAITING and SCHEDULED NEXT Tasks" (if cf/hide-scheduled-and-waiting-next-tasks "Hide" "Show"))) - - -(defun cf/skip-stuck-projects () - (save-restriction - (widen) - (let ((next-headline (save-excursion (or (outline-next-heading) (point-max))))) - (if (cf/is-project-p) - (let* ((subtree-end (save-excursion (org-end-of-subtree t))) - (has-next )) - (save-excursion - (forward-line 1) - (while (and (not has-next) (< (point) subtree-end) (re-search-forward "^\\*+ NEXT " subtree-end t)) - (unless (member "WAITING" (org-get-tags-at)) - (setq has-next t)))) - (if has-next - nil - next-headline)) ; a stuck project, has subtasks but no next task - nil)))) - -(defun cf/skip-non-stuck-projects () - ;; (cf/list-sublevels-for-projects-indented) - (save-restriction - (widen) - (let ((next-headline (save-excursion (or (outline-next-heading) (point-max))))) - (if (cf/is-project-p) - (let* ((subtree-end (save-excursion (org-end-of-subtree t))) - (has-next )) - (save-excursion - (forward-line 1) - (while (and (not has-next) (< (point) subtree-end) (re-search-forward "^\\*+ NEXT " subtree-end t)) - (unless (member "WAITING" (org-get-tags-at)) - (setq has-next t)))) - (if has-next - next-headline - nil)) ; a stuck project, has subtasks but no next task - next-headline)))) - -(defun cf/skip-non-projects () - ;; (cf/list-sublevels-for-projects-indented) - (if (save-excursion (cf/skip-non-stuck-projects)) - (save-restriction - (widen) - (let ((subtree-end (save-excursion (org-end-of-subtree t)))) - (cond - ((cf/is-project-p) - nil) - ((and (cf/is-project-subtree-p) (not (cf/is-task-p))) - nil) - (t - subtree-end)))) - (save-excursion (org-end-of-subtree t)))) - (defun cf/skip-non-tasks () (save-restriction (widen) @@ -321,108 +165,6 @@ (t next-headline))))) -(defun cf/skip-project-trees-and-habits () - (save-restriction - (widen) - (let ((subtree-end (save-excursion (org-end-of-subtree t)))) - (cond - ((cf/is-project-p) - subtree-end) - ((org-is-habit-p) - subtree-end) - (t - nil))))) - -(defun cf/skip-projects-and-habits-and-single-tasks () - (save-restriction - (widen) - (let ((next-headline (save-excursion (or (outline-next-heading) (point-max))))) - (cond - ((org-is-habit-p) - next-headline) - ((and cf/hide-scheduled-and-waiting-next-tasks - (member "WAITING" (org-get-tags-at))) - next-headline) - ((cf/is-project-p) - next-headline) - ((and (cf/is-task-p) (not (cf/is-project-subtree-p))) - next-headline) - (t - nil))))) - -(defun cf/skip-project-tasks-maybe () - (save-restriction - (widen) - (let* ((subtree-end (save-excursion (org-end-of-subtree t))) - (next-headline (save-excursion (or (outline-next-heading) (point-max)))) - (limit-to-project (marker-buffer org-agenda-restrict-begin))) - (cond - ((cf/is-project-p) - next-headline) - ((org-is-habit-p) - subtree-end) - ((and (not limit-to-project) - (cf/is-project-subtree-p)) - subtree-end) - ((and limit-to-project - (cf/is-project-subtree-p) - (member (org-get-todo-state) (list "NEXT"))) - subtree-end) - (t - nil))))) - -(defun cf/skip-project-tasks () - (save-restriction - (widen) - (let* ((subtree-end (save-excursion (org-end-of-subtree t)))) - (cond - ((cf/is-project-p) - subtree-end) - ((org-is-habit-p) - subtree-end) - ((cf/is-project-subtree-p) - subtree-end) - (t - nil))))) - - -(defun cf/skip-non-project-tasks () - (save-restriction - (widen) - (let* ((subtree-end (save-excursion (org-end-of-subtree t))) - (next-headline (save-excursion (or (outline-next-heading) (point-max))))) - (cond - ((cf/is-project-p) - next-headline) - ((org-is-habit-p) - subtree-end) - ((and (cf/is-project-subtree-p) - (member (org-get-todo-state) (list "NEXT"))) - subtree-end) - ((not (cf/is-project-subtree-p)) - subtree-end) - (t - nil))))) - - -(defun cf/skip-projects-and-habits () - (save-restriction - (widen) - (let ((subtree-end (save-excursion (org-end-of-subtree t)))) - (cond - ((cf/is-project-p) - subtree-end) - ((org-is-habit-p) - subtree-end) - (t - nil))))) - -(defun cf/skip-non-subprojects () - (let ((next-headline (save-excursion (outline-next-heading)))) - (if (cf/is-subproject-p) - nil - next-headline))) - (defun cf/skip-non-archivable-tasks () (save-restriction (widen)