From 42553b34003b60e4738b6d5bd9e1f39044f1a377 Mon Sep 17 00:00:00 2001 From: gxlin Date: Sun, 4 Jul 2021 22:16:16 +0800 Subject: Speed up my emacs startup --- .emacs.d/modes/init-org-mode.el | 78 ++++++++++++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 21 deletions(-) (limited to '.emacs.d/modes/init-org-mode.el') diff --git a/.emacs.d/modes/init-org-mode.el b/.emacs.d/modes/init-org-mode.el index 80f1e70..af03184 100644 --- a/.emacs.d/modes/init-org-mode.el +++ b/.emacs.d/modes/init-org-mode.el @@ -1,9 +1,15 @@ (use-package org + :ensure t :after evil - :commands org-agenda + :commands (org-mode org-agenda org-store-link org-capture) + :mode (("\\.org$" . org-mode)) :hook ((org-mode . (lambda () (setq tab-width 4)))) :init (setq org-src-tab-acts-natively t) + (evil-define-key 'normal 'global + (kbd "a") 'org-agenda + (kbd "l") 'org-store-link + (kbd "c") 'org-capture) :config (require 'org-tempo) (setq org-directory "~/notes/") @@ -14,36 +20,47 @@ ("j" "Journal" entry (file+datetree org-default-notes-file) "* %?\nCaptured on %U\n %i\n %a"))) (add-hook 'org-mode-hook (lambda () (setq truncate-lines nil))) -; (setq org-agenda-files (directory-files-recursively "~/notes/" "\\.org$")) - (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) (setq org-agenda-start-on-weekday 0) (setq org-adapt-indentation nil) (setq org-return-follows-link t) (setq org-descriptive-links nil) - (evil-define-key 'normal 'global - (kbd "a") 'org-agenda - (kbd "l") 'org-store-link - (kbd "c") 'org-capture) (evil-define-key 'normal org-mode-map (kbd "TAB") 'org-cycle (kbd "RET") 'org-open-at-point - (kbd "ot") 'org-todo (kbd "os") 'org-schedule (kbd "od") 'org-deadline - (kbd "or") 'org-refile) + (kbd "or") 'org-refile + (kbd "oil") 'org-insert-link + (kbd "oih") 'org-insert-heading) + (setq org-tags-exclude-from-inheritance + '("PROJECT")) + + ;; refile + (setq org-refile-targets '((nil :maxlevel . 9) + (org-agenda-files :maxlevel . 9)) + org-outline-path-complete-in-steps nil + org-refile-use-outline-path 'file) + + (setq org-stuck-projects + '("+PROJECT/-SOMEDAY-DONE-MAYBE" ("NEXT") ("@shop") + "\\")) ;; todo (setq org-todo-keywords - '((sequence "TODO" "NEXT" "WAITING" "SOMEDAY" "PROJECT" "|" "DONE" "CANCELED"))) + '((sequence "TODO(t)" ; to do later + "NEXT" ; doing now or to do soon + "WAITING(w)" "SOMEDAY(s)" + "|" "DONE(d)" "CANCELED(c)"))) (setq org-log-done t) ;; tags (setq org-tag-alist '((:startgroup . nil) - ("work" . ?w) ("home" . ?h) ("errants" . ?e) + ("@work" . ?w) ("@home" . ?h) ("errants" . ?e) (:endgroup . nil) ("phone" . ?p) ("FLAGGED" . ?f) - ("URGENT" . ?u))) + ("URGENT" . ?u) + ("PROJECT" . ?p))) ;; org babel (org-babel-do-load-languages @@ -52,21 +69,40 @@ (use-package org-agenda :ensure nil + :after (org) + :commands (org-agenda) :init (setq org-agenda-dim-blocked-tasks nil) (setq org-agenda-skip-deadline-prewarning-if-scheduled t) (setq org-deadline-warning-days 10) (setq org-agenda-compact-blocks t) (setq org-agenda-custom-commands - '(("d" "Daily agenda and all TODOs" - ((tags "PRIORITY=\"A\"" - ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) - (org-agenda-overriding-header "High-priority unfinished tasks:"))) - (agenda "" ((org-agenda-ndays-to-span 1))) - (alltodo "" - ((org-agenda-skip-function '(or (org-agenda-skip-if nil '(scheduled deadline)))) - (org-agenda-overriding-header "All normal priority tasks:")))))))) - + '(("D" "Daily agenda and all TODOs" + ((agenda "" ((org-agenda-span 1))) + (tags-todo "+PRIORITY=\"A\"") + (tags-todo "computer|@office|phone") + (tags "PROJECT+CATEGORY=\"elephants\"") + (todo "WAITING")) + ((org-agenda-compact-blocks t))) + ("W" "Weekly Review" + ((agenda "" ((org-agenda-ndays-to-span 7))) + (stuck "") ; review stuck porjects as designated by org-stuck-projects + (todo "NEXT") + (todo "WAITING"))) + ("d" "Upcoming deadlines" agenda "" + ((org-agenda-time-grid nil) + (org-deadline-warning-days 365) + (org-agenda-entry-types '(:deadline)))) + ("c" "Weekly schedule" agenda "" + ((org-agenda-span 7) + (org-agenda-repeating-timestamp-show-all t) + (org-agenda-entry-types '(:deadline :scheduled)))) + ("g" . "GTD contexts") + ("gh" "Home" tags-todo "home") + ("p" . "Priorities") + ("pa" "A items" tags-todo "+PRIORITIES=\"A\"") + ("pb" "B items" tags-todo "+PRIORITIES=\"B\"") + ("pc" "C items" tags-todo "+PRIORITIES=\"C\"")))) (use-package evil-org :ensure t -- cgit v1.2.3