diff --git a/unravel-emacs.org b/unravel-emacs.org index c217b22..3bd3ba4 100644 --- a/unravel-emacs.org +++ b/unravel-emacs.org @@ -3960,7 +3960,7 @@ title of the task, and the like. The documentation string of #+end_quote #+begin_src emacs-lisp :tangle "unravel-modules/unravel-org.el" - ;;;; capture + ;;;; org-capture (use-package org-capture :ensure nil :bind ("C-c c" . org-capture)) @@ -4963,6 +4963,338 @@ To install ~zig~ and ~zls~ on MacOS: (provide 'unravel-langs) #+end_src +* The =unravel-personal.el= module +:PROPERTIES: +:CUSTOM_ID: h:0EAB9FBA-98AD-4E0E-BC01-71D1EC920B8D +:END: +I want this section to contain all the personal configuration that anyone using this repo should modify. But I don't know how to do this properly at the moment, so just noting things here until then. + +#+begin_src emacs-lisp :tangle "unravel-modules/unravel-essentials.el" + (use-package startup + :ensure nil + :config + (setq user-mail-address "vedang@unravel.tech")) + +#+end_src + +** My personal settings for ~org-capture~ + +#+begin_src emacs-lisp :tangle "unravel-modules/unravel-org.el" + ;;;; org-capture + (use-package org-capture + :ensure nil + :config + ;;; Default definitions for variables used in capture templates + (when (not (boundp 'org-blogpost-file)) + (defvar org-blogpost-file org-default-notes-file + "File in which blogposts and microblogposts are stored.")) + (when (not (boundp 'org-company-file)) + (defvar org-company-file org-default-notes-file + "File in which company documentation is stored.")) + + ;;; *CRITICAL NOTE* Read before modifying the push stack below: + ;; Pushing to capture templates is a stack. What goes in first shows + ;; up at the bottom of the capture templates list. + + ;;; Templates for thinking tools + (push '("T" "Templates for Helping Me Think") org-capture-templates) + ;; Capture a decision that you've taken, for review and reflection later. + (push `("Td" "Decision Journal" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.decision.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Current Reality Tree for a problem + (push `("Tc" "Current Reality Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.crt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create an Evaporating Cloud for a problem + (push `("Te" "Evaporating Cloud" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.ec.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Future Reality Tree for a problem + (push `("Tf" "Future Reality Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.frt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Prerequisite Tree for a problem + (push `("Tp" "Prerequisite Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.prt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Transition Tree for a problem + (push `("Tt" "Transition Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.trt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture a new Business idea for sketching out / thinking through + (push `("Tb" "Business Canvas" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/business.canvas.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture a customer persona, note that this is always captured in + ;; the current clocking task, and is something I should do under the + ;; business canvas. + (push `("TP" "Customer Persona (under Business Canvas)" entry + (clock) + (file ,(expand-file-name "capture-templates/business.customer.persona.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture a customer journey through your product, note that this is + ;; always captured in the current clocking task + (push `("Tj" "Customer Journey (under Business Canvas)" entry + (clock) + (file ,(expand-file-name "capture-templates/business.customer.journey.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;;; Templates for capturing data about myself on a day-to-day basis + (push '("d" "Templates for Capturing Data (personal)") org-capture-templates) + + ;; Capture weight / food. This seems hard to get into a laptop habit. + ;; This is the kind of quantitative life that a mobile solution would + ;; have helped with. + + (push `("dw" "Weight Tracking" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/bodylog.weight.org")) + :clock-in t + :clock-resume t + :immediate-finish t + :empty-lines 1) + org-capture-templates) + + (push `("df" "Food Tracking" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/bodylog.food.org")) + :clock-in t + :clock-resume t + :immediate-finish t + :empty-lines 1) + org-capture-templates) + + (push `("dd" "Downtime Tracking" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/bodylog.dt.org")) + :clock-in t + :clock-resume t + :immediate-finish t + :empty-lines 1) + org-capture-templates) + + ;;; Templates for capturing build in public ideas + (push '("b" "Templates for Capturing Build in Public") org-capture-templates) + + ;; Capture Micro-blogging + (push `("bm" "New Microblogging entry" entry + (file+olp+datetree org-blogpost-file "Microblogging") + (file ,(expand-file-name "capture-templates/microblog.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; New blogpost idea + (push `("bb" "New Blogpost entry" entry + (file+headline org-blogpost-file "Meta: Blogposts to write") + (file ,(expand-file-name "capture-templates/todo.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;;; Templates for when I want to capture specific feedback about something + (push '("f" "Templates for Feedback, Reflection, Journaling") org-capture-templates) + + ;; Capture feedback for people I am working with + (push `("fp" "Feedback for People I'm working with" item + (file+headline org-company-file "Feedback") + (file ,(expand-file-name "capture-templates/feedback.others.org")) + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; The monthly newsletter to send to investors, friends and mentors + (push `("fn" "Company Newsletters" entry + (file+headline org-company-file "Company Newsletters") + (file ,(expand-file-name "capture-templates/business.updates.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture suggestions / ideas from other people, which can be + ;; expanded into actual projects later. + (push `("fs" "Ideas and Suggestions" entry + (file+headline org-company-file "Ideas and Suggestions") + (file ,(expand-file-name "capture-templates/suggestion.org")) + :prepend t + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;;; Templates for planning on a day-to-day basis + (push '("p" "Templates for Planning") org-capture-templates) + + ;; Deliberately plan out and make a routine out of start of day and + ;; end of day activities. + + (push `("ps" "The Start of Day Planning Routine" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/workday.start.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + (push `("pe" "The End of Day Reflection Routine" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/workday.end.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + (push `("pn" "The Next Day Intentions Routine" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/workday.next.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;;; Templates for capturing meetings, events, something happening at this time + (push '("m" "Templates for Capturing Meetings or Events") org-capture-templates) + + ;; Capture an upcoming meeting or one that has already happened + (push `("mp" "Meeting some other day" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/meeting.org")) + :prepend t + :clock-in t + :clock-resume t + :time-prompt t) + org-capture-templates) + + ;; Capture notes for an ongoing meeting or a meeting that's already + ;; happened. + (push `("mn" "Meeting today" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/meeting.org")) + :prepend t + :clock-in t + :clock-resume t) + org-capture-templates) + + ;;; Templates for Capturing Tasks + (push '("t" "Templates for Capturing Tasks") org-capture-templates) + + ;; Set up a new habit for tracking. This should be refiled to the + ;; correct location later. + (push `("th" "Habit" entry + (file+headline org-default-notes-file "My Habit Tracker") + (file ,(expand-file-name "capture-templates/habit.org"))) + org-capture-templates) + + ;; One-click Capture for replying to emails from notmuch. Creates a + ;; task to remind you that you need to reply to this email. + (push `("tr" "Respond to email" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/reply.org")) + :clock-in t + :clock-resume t + :immediate-finish t) + org-capture-templates) + + ;; One-click capture of links from the clipboard. Used in conjunction + ;; with `org-protocol', or as a stand-alone to capture links. + (push `("tw" "Website Link Immediate Capture" entry + (file+olp org-default-notes-file "Links Captured from the Browser") + (file ,(expand-file-name "capture-templates/website.org")) + :immediate-finish t) + org-capture-templates) + + ;; A more nuanced capture for browser links, which I use for cleaning + ;; out my browser 2/3 times a week. + (push `("tl" "Website Link Pinboard Capture" entry + (file+olp org-default-notes-file "Links Captured from the Browser") + (file ,(expand-file-name "capture-templates/pinboard.capture.org")) + :clock-in t + :clock-resume t + :immediate-finish t) + org-capture-templates) + + ;; Capture a task where someone expects me to communicate when it's done + (push `("tj" "Jira or External-facing Task" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/jira.org")) + :clock-in t + :clock-resume t) + org-capture-templates) + + ;; One-click Capture for Tasks. Captures the task immediately and gets + ;; out of your way. + (push `("ti" "Simple Task Immediate Finish" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/todo.org")) + :clock-in t + :clock-resume t + :immediate-finish t) + org-capture-templates)) +#+end_src + + * Custom libraries ** The =prot-common.el= library :PROPERTIES: diff --git a/unravel-modules/unravel-essentials.el b/unravel-modules/unravel-essentials.el index c91755d..52ff813 100644 --- a/unravel-modules/unravel-essentials.el +++ b/unravel-modules/unravel-essentials.el @@ -196,3 +196,8 @@ If the region is selected, retain the original behaviour, otherwise call (setq column-number-mode t)) (provide 'unravel-essentials) + +(use-package startup + :ensure nil + :config + (setq user-mail-address "vedang@unravel.tech")) diff --git a/unravel-modules/unravel-org.el b/unravel-modules/unravel-org.el index 1df9a50..b0c3e2a 100644 --- a/unravel-modules/unravel-org.el +++ b/unravel-modules/unravel-org.el @@ -70,10 +70,7 @@ ("M-." . org-edit-special) ; alias for C-c ' (mnenomic is global M-. that goes to source) :map org-src-mode-map ("M-," . org-edit-src-exit) ; see M-. above - :map narrow-map - ("b" . org-narrow-to-block) - ("e" . org-narrow-to-element) - ("s" . org-narrow-to-subtree)) + ) :config ;;;; general settings (setq org-ellipsis "...") @@ -111,6 +108,29 @@ (setq org-default-priority ?A) (setq org-priority-faces nil)) +;;;; archival, org-archive +(use-package org + :ensure nil + :config + ;; Setup directory and file paths for org + (defvar org-archive-directory (concat org-directory "/archive") + "Directory under which all archived content is stored.") + (setq org-archive-location (concat org-archive-directory "/%s_archive::"))) + +;;; Narrowing and Folding +(use-package org + :ensure nil + :bind + ( :map narrow-map + ("b" . org-narrow-to-block) + ("e" . org-narrow-to-element) + ("s" . org-narrow-to-subtree))) + +(use-package org-fold + :ensure nil + :config + (setq org-fold-catch-invisible-edits 'show-and-error)) + ;;;; refile, todo (use-package org :ensure nil @@ -192,7 +212,7 @@ (setq org-html-head-include-default-style nil) (setq org-html-head-include-scripts nil)) -;;;; capture +;;;; org-capture (use-package org-capture :ensure nil :bind ("C-c c" . org-capture)) @@ -385,3 +405,316 @@ ) (provide 'unravel-org) + +;;;; org-capture +(use-package org-capture + :ensure nil + :config +;;; Default definitions for variables used in capture templates + (when (not (boundp 'org-blogpost-file)) + (defvar org-blogpost-file org-default-notes-file + "File in which blogposts and microblogposts are stored.")) + (when (not (boundp 'org-company-file)) + (defvar org-company-file org-default-notes-file + "File in which company documentation is stored.")) + +;;; *CRITICAL NOTE* Read before modifying the push stack below: + ;; Pushing to capture templates is a stack. What goes in first shows + ;; up at the bottom of the capture templates list. + +;;; Templates for thinking tools + (push '("T" "Templates for Helping Me Think") org-capture-templates) + ;; Capture a decision that you've taken, for review and reflection later. + (push `("Td" "Decision Journal" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.decision.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Current Reality Tree for a problem + (push `("Tc" "Current Reality Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.crt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create an Evaporating Cloud for a problem + (push `("Te" "Evaporating Cloud" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.ec.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Future Reality Tree for a problem + (push `("Tf" "Future Reality Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.frt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Prerequisite Tree for a problem + (push `("Tp" "Prerequisite Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.prt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Create a Transition Tree for a problem + (push `("Tt" "Transition Tree" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/thinking.trt.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture a new Business idea for sketching out / thinking through + (push `("Tb" "Business Canvas" entry + (file+headline org-default-notes-file "Helping Me Think") + (file ,(expand-file-name "capture-templates/business.canvas.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture a customer persona, note that this is always captured in + ;; the current clocking task, and is something I should do under the + ;; business canvas. + (push `("TP" "Customer Persona (under Business Canvas)" entry + (clock) + (file ,(expand-file-name "capture-templates/business.customer.persona.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture a customer journey through your product, note that this is + ;; always captured in the current clocking task + (push `("Tj" "Customer Journey (under Business Canvas)" entry + (clock) + (file ,(expand-file-name "capture-templates/business.customer.journey.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + +;;; Templates for capturing data about myself on a day-to-day basis + (push '("d" "Templates for Capturing Data (personal)") org-capture-templates) + + ;; Capture weight / food. This seems hard to get into a laptop habit. + ;; This is the kind of quantitative life that a mobile solution would + ;; have helped with. + + (push `("dw" "Weight Tracking" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/bodylog.weight.org")) + :clock-in t + :clock-resume t + :immediate-finish t + :empty-lines 1) + org-capture-templates) + + (push `("df" "Food Tracking" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/bodylog.food.org")) + :clock-in t + :clock-resume t + :immediate-finish t + :empty-lines 1) + org-capture-templates) + + (push `("dd" "Downtime Tracking" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/bodylog.dt.org")) + :clock-in t + :clock-resume t + :immediate-finish t + :empty-lines 1) + org-capture-templates) + +;;; Templates for capturing build in public ideas + (push '("b" "Templates for Capturing Build in Public") org-capture-templates) + + ;; Capture Micro-blogging + (push `("bm" "New Microblogging entry" entry + (file+olp+datetree org-blogpost-file "Microblogging") + (file ,(expand-file-name "capture-templates/microblog.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; New blogpost idea + (push `("bb" "New Blogpost entry" entry + (file+headline org-blogpost-file "Meta: Blogposts to write") + (file ,(expand-file-name "capture-templates/todo.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + +;;; Templates for when I want to capture specific feedback about something + (push '("f" "Templates for Feedback, Reflection, Journaling") org-capture-templates) + + ;; Capture feedback for people I am working with + (push `("fp" "Feedback for People I'm working with" item + (file+headline org-company-file "Feedback") + (file ,(expand-file-name "capture-templates/feedback.others.org")) + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; The monthly newsletter to send to investors, friends and mentors + (push `("fn" "Company Newsletters" entry + (file+headline org-company-file "Company Newsletters") + (file ,(expand-file-name "capture-templates/business.updates.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + ;; Capture suggestions / ideas from other people, which can be + ;; expanded into actual projects later. + (push `("fs" "Ideas and Suggestions" entry + (file+headline org-company-file "Ideas and Suggestions") + (file ,(expand-file-name "capture-templates/suggestion.org")) + :prepend t + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + +;;; Templates for planning on a day-to-day basis + (push '("p" "Templates for Planning") org-capture-templates) + + ;; Deliberately plan out and make a routine out of start of day and + ;; end of day activities. + + (push `("ps" "The Start of Day Planning Routine" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/workday.start.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + (push `("pe" "The End of Day Reflection Routine" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/workday.end.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + + (push `("pn" "The Next Day Intentions Routine" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/workday.next.org")) + :prepend nil + :clock-in t + :clock-resume t + :empty-lines 1) + org-capture-templates) + +;;; Templates for capturing meetings, events, something happening at this time + (push '("m" "Templates for Capturing Meetings or Events") org-capture-templates) + + ;; Capture an upcoming meeting or one that has already happened + (push `("mp" "Meeting some other day" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/meeting.org")) + :prepend t + :clock-in t + :clock-resume t + :time-prompt t) + org-capture-templates) + + ;; Capture notes for an ongoing meeting or a meeting that's already + ;; happened. + (push `("mn" "Meeting today" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/meeting.org")) + :prepend t + :clock-in t + :clock-resume t) + org-capture-templates) + +;;; Templates for Capturing Tasks + (push '("t" "Templates for Capturing Tasks") org-capture-templates) + + ;; Set up a new habit for tracking. This should be refiled to the + ;; correct location later. + (push `("th" "Habit" entry + (file+headline org-default-notes-file "My Habit Tracker") + (file ,(expand-file-name "capture-templates/habit.org"))) + org-capture-templates) + + ;; One-click Capture for replying to emails from notmuch. Creates a + ;; task to remind you that you need to reply to this email. + (push `("tr" "Respond to email" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/reply.org")) + :clock-in t + :clock-resume t + :immediate-finish t) + org-capture-templates) + + ;; One-click capture of links from the clipboard. Used in conjunction + ;; with `org-protocol', or as a stand-alone to capture links. + (push `("tw" "Website Link Immediate Capture" entry + (file+olp org-default-notes-file "Links Captured from the Browser") + (file ,(expand-file-name "capture-templates/website.org")) + :immediate-finish t) + org-capture-templates) + + ;; A more nuanced capture for browser links, which I use for cleaning + ;; out my browser 2/3 times a week. + (push `("tl" "Website Link Pinboard Capture" entry + (file+olp org-default-notes-file "Links Captured from the Browser") + (file ,(expand-file-name "capture-templates/pinboard.capture.org")) + :clock-in t + :clock-resume t + :immediate-finish t) + org-capture-templates) + + ;; Capture a task where someone expects me to communicate when it's done + (push `("tj" "Jira or External-facing Task" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/jira.org")) + :clock-in t + :clock-resume t) + org-capture-templates) + + ;; One-click Capture for Tasks. Captures the task immediately and gets + ;; out of your way. + (push `("ti" "Simple Task Immediate Finish" entry + (file+olp+datetree org-default-notes-file) + (file ,(expand-file-name "capture-templates/todo.org")) + :clock-in t + :clock-resume t + :immediate-finish t) + org-capture-templates))