diff options
Diffstat (limited to 'lisp/org-custom.el')
| -rw-r--r-- | lisp/org-custom.el | 73 |
1 files changed, 64 insertions, 9 deletions
diff --git a/lisp/org-custom.el b/lisp/org-custom.el index 6c6b7e4..a6c31c3 100644 --- a/lisp/org-custom.el +++ b/lisp/org-custom.el @@ -26,11 +26,32 @@ `(org-document-title ((t (,@headline ,@variable-tuple :height 1.3 :weight bold)))))) - (use-package org-bullets - :ensure t - :config - (org-bullets-mode 1) - ) + ;; (use-package org-bullets + ;; :ensure t + ;; :config + ;; (org-bullets-mode 1) + ;; ) + + (use-package org-modern + :ensure t + :config + (global-org-modern-mode)) + + (setq org-ellipsis "…") + (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) + + (setq + ;; Edit settings + org-auto-align-tags nil + org-tags-column 0 + org-catch-invisible-edits 'show-and-error + org-special-ctrl-a/e t + org-insert-heading-respect-content t + + ;; Org styling, hide markup etc. + org-hide-emphasis-markers t + org-pretty-entities t + org-agenda-tags-column 0) (org-indent-mode 1) (visual-line-mode 1)) @@ -41,8 +62,7 @@ (setq org-default-notes-file (concat org-directory "/inbox.org")) (setq org-todo-keywords - '((sequence "TODO" "PROGRESS" "VERIFY" "|" "DONE" "ABANDONED") - (sequence "IDEA(i)" "QUESTION(q)" "|" "RESOLVED"))) + '((sequence "TODO" "PROGRESS" "|" "DONE"))) (setq org-return-follows-link t) @@ -66,6 +86,22 @@ ;; alert-default-style 'libnotify) ;; (org-alert-enable)) +(defun my/org-roam-dailies-previous-file () + "Return filename of the most recent existing org-roam daily before today." + (let* ((dir (file-name-as-directory org-roam-directory)) + (time (current-time)) + (found nil) + (i 1)) + (while (and (not found) (< i 366)) + (let* ((date (format-time-string "%Y-%m-%d" + (time-subtract time (days-to-time i)))) + (file (expand-file-name (concat date ".org") dir))) + (when (file-exists-p file) + (setq found file))) + (setq i (1+ i))) + found)) + + (use-package org-roam :ensure t :custom @@ -85,7 +121,7 @@ '(("d" "default" entry "* %?" :target (file+head "%<%Y-%m-%d>.org" - "#+title: %<%Y-%m-%d> 📰 \n#+filetags: :dailies: \n\n* Tasks 🎯\n\n* Notes 📁\n\n")))) + "#+title: %<%Y-%m-%d> 📰 \n#+filetags: :dailies: \n\n[[file:%(my/org-roam-dailies-previous-file)][← Previous Day]]\n\n* Tasks 🎯\n\n")))) (setq org-roam-capture-templates '(("d" "default" plain "%?" @@ -96,7 +132,7 @@ :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title} 🎫\n #+filetags: :issues:ticket:project:canonical\n") :unnarrowed t) ("b" "book" plain - "\n\n* Overview \n " + "\n\n* Overview \n\n* Rating \n\n* Links \n " :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title} 📚\n #+filetags: :books\n") :unnarrowed t))) (org-roam-setup) @@ -122,5 +158,24 @@ (setq org-log-repeat nil) +(defun mk/org-clock-active-p () + "Return non-nil if a clock is currently running." + (and (boundp 'org-clock-current-task) + org-clock-current-task)) + +(defun mk/org-auto-clock-based-on-state () + "Automatically clock in/out based on TODO state changes." + (when (derived-mode-p 'org-mode) + (pcase org-state + ("PROGRESS" + (unless (mk/org-clock-active-p) + (org-clock-in))) + ("DONE" + (when (mk/org-clock-active-p) + (org-clock-out)))))) + +(add-hook 'org-after-todo-state-change-hook #'mk/org-auto-clock-based-on-state) +(setq org-clock-history-length 0) + (provide 'org-custom) ;;; org-custom.el ends here |
