aboutsummaryrefslogtreecommitdiffstats
path: root/_spacemacs.d/config/aly-org-config.el
diff options
context:
space:
mode:
Diffstat (limited to '_spacemacs.d/config/aly-org-config.el')
-rw-r--r--_spacemacs.d/config/aly-org-config.el286
1 files changed, 0 insertions, 286 deletions
diff --git a/_spacemacs.d/config/aly-org-config.el b/_spacemacs.d/config/aly-org-config.el
deleted file mode 100644
index 0fb46f5..0000000
--- a/_spacemacs.d/config/aly-org-config.el
+++ /dev/null
@@ -1,286 +0,0 @@
-;;; aly-org-config.el --- Custom Configurations for Org Mode
-;; -*- mode: emacs-lisp -*-
-;; vim: set ts=8 sw=2 tw=0 fenc=utf-8 ft=lisp:
-;;
-;; Aaron LI
-;; Created: 2016-05-31
-;;
-
-;;; Commentary:
-;; Custom configurations for Emacs Org mode
-;;
-;; [1] Spacemacs: Org layer
-;; https://github.com/syl20bnr/spacemacs/blob/master/layers/org/README.org
-;; [2] Norang: Org Mode (by Bernt Hansen)
-;; http://doc.norang.ca/org-mode.html
-;;
-
-;;; Code:
-
-;; Default task to clock in whenever the clock normally stops
-(defvar aly/organization-task-id "bb7f1326-bda4-11e6-a30d-185e0f33a428")
-
-;; Allow single character alphabetical bullets
-;; Need to be set before `org.el' is loaded
-(setq org-list-allow-alphabetical t)
-
-;; NOTE:
-;; Spacemacs use the `org' from the ELPA instead of the one shipped with
-;; Emacs. Therefore, any `org'-related code should NOT be loaded before
-;; `dotspacemacs/user-config'.
-(with-eval-after-load 'org
- (require 'org-habit)
- (require 'org-clock)
- (require 'ox-latex)
-
- ;; Load custom helper functions for Org
- (require 'aly-org-helpers)
-
- ;; Default location to look for Org files
- (setq org-directory '("~/org"))
- ;; Directories of files / files to be used for agenda display
- (setq org-agenda-files '("~/org"))
- ;; Default file for storing notes, also the fallback file for capture
- (setq org-default-notes-file "~/org/refile.org")
-
- ;; TODO state keywords and face settings
- (setq org-todo-keywords
- '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
- (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|"
- "CANCELLED(c@/!)" "MAIL" "PHONE" "MEETING")))
- ;(setq org-todo-keyword-faces
- ; '(("TODO" :foreground "red" :weight bold)
- ; ("NEXT" :foreground "blue" :weight bold)
- ; ("DONE" :foreground "forest green" :weight bold)
- ; ("WAITING" :foreground "orange" :weight bold)
- ; ("HOLD" :foreground "magenta" :weight bold)
- ; ("CANCELLED" :foreground "forest green" :weight bold)
- ; ("MAIL" :foreground "forest green" :weight bold)
- ; ("PHONE" :foreground "forest green" :weight bold)
- ; ("MEETING" :foreground "forest green" :weight bold)))
- ;; Automatically assign tags on state changes
- (setq org-todo-state-tags-triggers
- '(("CANCELLED" ("CANCELLED" . t)) ;; add "CANCELLED" tag
- ("WAITING" ("WAITING" . t)) ;; add "WAITING" tag
- ("HOLD" ("WAITING") ("HOLD" . t))
- (done ("WAITING") ("HOLD")) ;; remove "WAITING" and "HOLD" tags
- ("TODO" ("WAITING") ("CANCELLED") ("HOLD"))
- ("TODO" ("WAITING") ("CANCELLED") ("HOLD"))
- ("DONE" ("WAITING") ("CANCELLED") ("HOLD"))))
-
- ;; Allow to select a state while bypass the associated logging
- (setq org-treat-S-cursor-todo-selection-as-state-change nil)
-
- ;; Capture templates
- (setq org-capture-templates
- '(("t" "Task" entry (file "")
- "* TODO %?\n%U\n%a\n" :clock-in t :clock-resume t)
- ("n" "Note" entry (file "")
- "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t)
- ("d" "Diary" entry (file+datetree "diary.org")
- "* %?\n%U\n" :clock-in t :clock-resume t)
- ("p" "Phone Call" entry (file "")
- "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t)
- ("m" "Meeting" entry (file "")
- "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t)
- ("h" "Habit" entry (file "")
- "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"%<<%Y-%m-%d %a .+1d/3d>>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n")
- ))
-
- ;; Remove empty `LOGBOOK' drawers on clock out
- (add-hook 'org-clock-out-hook 'aly/remove-empty-drawer-on-clock-out 'append)
-
- ;; More handy shortcuts
- (global-set-key (kbd "<f9>") 'org-agenda)
-
- ;; Exclude `DONE' state tasks from refile targets
- (setq org-refile-target-verify-function 'aly/verify-refile-target)
-
- ;; Do not dim blocked tasks
- (setq org-agenda-dim-blocked-tasks nil)
- ;; Compact the block agenda view
- (setq org-agenda-compact-blocks t)
- ;; Custom agenda command definitions
- (setq org-agenda-custom-commands
- '(("N" "Notes" tags "NOTE"
- ((org-agenda-overriding-header "Notes")
- (org-tags-match-list-sublevels t)))
- ("h" "Habits" tags-todo "STYLE=\"habit\""
- ((org-agenda-overriding-header "Habits")
- (org-agenda-sorting-strategy
- '(todo-state-down effort-up category-keep))))
- (" " "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 'aly/skip-non-stuck-projects)
- (org-agenda-sorting-strategy
- '(category-keep))))
- (tags-todo "-HOLD-CANCELLED/!"
- ((org-agenda-overriding-header "Projects")
- (org-agenda-skip-function 'aly/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 aly/hide-scheduled-and-waiting-next-tasks
- ""
- " (including WAITING and SCHEDULED tasks)")))
- (org-agenda-skip-function 'aly/skip-projects-and-habits-and-single-tasks)
- (org-tags-match-list-sublevels t)
- (org-agenda-todo-ignore-scheduled aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-deadlines aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-with-date aly/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 aly/hide-scheduled-and-waiting-next-tasks
- ""
- " (including WAITING and SCHEDULED tasks)")))
- (org-agenda-skip-function 'aly/skip-non-project-tasks)
- (org-agenda-todo-ignore-scheduled aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-deadlines aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-with-date aly/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 aly/hide-scheduled-and-waiting-next-tasks
- ""
- " (including WAITING and SCHEDULED tasks)")))
- (org-agenda-skip-function 'aly/skip-project-tasks)
- (org-agenda-todo-ignore-scheduled aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-deadlines aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-with-date aly/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 aly/hide-scheduled-and-waiting-next-tasks
- ""
- " (including WAITING and SCHEDULED tasks)")))
- (org-agenda-skip-function 'aly/skip-non-tasks)
- (org-tags-match-list-sublevels nil)
- (org-agenda-todo-ignore-scheduled aly/hide-scheduled-and-waiting-next-tasks)
- (org-agenda-todo-ignore-deadlines aly/hide-scheduled-and-waiting-next-tasks)))
- (tags "-REFILE/"
- ((org-agenda-overriding-header "Tasks to Archive")
- (org-agenda-skip-function 'aly/skip-non-archivable-tasks)
- (org-tags-match-list-sublevels nil))))
- nil)))
-
- (defun aly/org-auto-exclude-function (tag)
- "Automatic task exclusion in the agenda with `/ RET'"
- (and (cond
- ((string= tag "hold") t) ; exclude "HOLD" tasks
- )
- (concat "-" tag)))
- (setq org-agenda-auto-exclude-function 'aly/org-auto-exclude-function)
-
- ;; Clocking
- ;;
- ;; Resume clocking task when Emacs is restarted
- (org-clock-persistence-insinuate)
- ;; Save the running clock and all clock history when exiting Emacs,
- ;; and load it on startup
- (setq org-clock-persist t)
- ;; Do not prompt to resume an active clock
- (setq org-clock-persist-query-resume nil)
- ;; Enable auto clock resolution for finding open clocks
- (setq org-clock-auto-clock-resolution 'when-no-clock-is-running)
- ;; Show lot of clocking history so it's easy to pick items off the list
- (setq org-clock-history-length 23)
- ;; Resume clocking task on clock-in if the clock is open
- (setq org-clock-in-resume t)
- ;; Change tasks to `NEXT' when clocking in
- (setq org-clock-in-switch-to-state 'aly/clock-in-to-next)
- ;; Separate drawers for clocking and logs
- (setq org-drawers '("PROPERTIES" "LOGBOOK"))
- ;; Save clock data and state changes and notes in the `LOGBOOK' drawer
- (setq org-clock-into-drawer t)
- ;; Remove clocked tasks with 0:00 duration
- (setq org-clock-out-remove-zero-time-clocks t)
- ;; Clock out when moving task to a done state
- (setq org-clock-out-when-done t)
- (add-hook 'org-clock-out-hook 'aly/clock-out-maybe 'append)
- ;; Use discrete minute intervals (no rounding) increments for time editing
- (setq org-time-stamp-rounding-minutes '(1 1))
-
- ;; Agenda clock report parameters
- (setq org-agenda-clockreport-parameter-plist
- '(:link t :maxlevel 5 :fileskip0 t :compact t :narrow 80))
- ;; Set default column view headings: Task Effort ClockSummary
- (setq org-columns-default-format
- "%80ITEM(task) %10Effort(Effort){:} %10CLOCKSUM")
- ;; Global `Effort' estimate values,
- ;; and global `STYLE' property values for completion
- (setq org-global-properties
- '(("Effort_ALL" . "0:15 0:30 0:45 1:00 2:00 3:00 4:00 5:00 6:00 0:00")
- ("STYLE_ALL" . "habit")))
- ;; Agenda log mode items to display (closed and state changes by default)
- (setq org-agenda-log-mode-items '(closed state))
-
- ;; Tags with fast selection keys
- (setq org-tag-alist
- '((:startgroup)
- ("@office" . ?o)
- ("@home" . ?H)
- ("@dorm" . ?d)
- (:endgroup)
- ("WAITING" . ?w)
- ("HOLD" . ?h)
- ("PERSONAL" . ?P)
- ("WORK" . ?W)
- ("ORG" . ?O)
- ("ASTRO" . ?a)
- ("NOTE" . ?n)
- ("CANCELLED" . ?c)
- ("FLAGGED" . ??)))
- ;; Allow setting single tags without the menu
- (setq org-fast-tag-selection-single-key (quote expert))
- ;; For tag searches ignore tasks with scheduled and deadline dates
- (setq org-agenda-tags-todo-honor-ignore-options t)
-
- ;; Any task with a subtask using a todo keyword is a project.
- ;; Projects are "stuck" if they have no subtask with a `NEXT' todo keyword.
-
- ;; Only show today's agenda by default
- (setq org-agenda-span 'day)
- ;; Disable the default stuck projects agenda view
- (setq org-stuck-projects '("" nil nil ""))
-
- ;; Archive
- (setq org-archive-mark-done nil)
- (setq org-archive-location "%s_archive::* Archived Tasks")
-
- ;; Enable in-using Babel languages
- (org-babel-do-load-languages
- 'org-babel-load-languages
- '((emacs-lisp . t)
- (sh . t)
- (python . t)
- (ditaa . t)
- ))
-
- ;; Set the bullet symbols for `org-bullets'
- (setq org-bullets-bullet-list '("♠" "♥" "♣" "♦")) ;; "SHoCkeD" ordering
-
- ;; Set the path to the `ditaa' program
- (setq org-ditaa-jar-path "~/.spacemacs.d/local/ditaa/ditaa.jar")
-
- ;; END: Org-mode configurations
- )
-
-
-(provide 'aly-org-config)
-
-;;; aly-org-config.el ends here