Journaling cleanup
This commit is contained in:
parent
a9ce3c1d27
commit
4e11a22457
2 changed files with 83 additions and 95 deletions
|
@ -28,37 +28,29 @@ A literate programming configuration file for extending the Journaling capabilit
|
|||
Using the [[https://github.com/bastibe/org-journal][org-journal]] project to easily create /daily/ journal entries:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package org-journal
|
||||
:init
|
||||
(use-package org-journal
|
||||
:after org
|
||||
:config
|
||||
(setq org-journal-dir "~/journal"
|
||||
org-journal-date-format " "
|
||||
org-journal-time-format ""
|
||||
org-journal-file-type 'daily
|
||||
org-journal-file-format "%Y%m%d")
|
||||
:config
|
||||
#+end_src
|
||||
Notice that the rest of this file's contents is /contained/ in this =config= section!
|
||||
|
||||
And let's put a /leader key/ sequence for it (Doom-specific):
|
||||
(ha-leader "f j" '("journal" . org-journal-new-entry))
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(ha-leader "f j" '("journal" . org-journal-new-entry))
|
||||
#+end_src
|
||||
|
||||
In normal Org file, I like large headers, but in my Journal, where each task is a header, I want them smaller:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'org-journal-mode-hook
|
||||
;; In normal Org file, I like large headers, but in my Journal,
|
||||
;; where each task is a header, I want them smaller:
|
||||
(add-hook 'org-journal-mode-hook
|
||||
(lambda ()
|
||||
(set-face-attribute 'org-level-1 nil :height 1.2)
|
||||
(set-face-attribute 'org-level-2 nil :height 1.1)
|
||||
(set-face-attribute 'org-level-3 nil :height 1.0)))
|
||||
#+end_src
|
||||
|
||||
But new files could use /my formatting/ (which is different than the options available in the project):
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(ha-auto-insert-file (rx "journal/" (zero-or-more any) (= 8 digit)) "journal")
|
||||
;; But new files could use /my formatting/ (which is different
|
||||
;; than the options available in the project):
|
||||
(ha-auto-insert-file (rx "journal/" (zero-or-more any) (= 8 digit)) "journal"))
|
||||
#+end_src
|
||||
|
||||
This depends on the following [[file:~/.doom.d/snippets/org-journal-mode/__journal][snippet/template file]]:
|
||||
|
@ -75,9 +67,9 @@ Note that when I create a new journal entry, I want a title that should insert a
|
|||
Since the Journal's filename represents a date, I should be able to get the "date" associated with a file.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun ha-journal-file-date (&optional datename)
|
||||
(defun ha-journal-file-date (&optional datename)
|
||||
"Returns a Lisp date-timestamp based on the format of the current filename,
|
||||
or DATENAME if given."
|
||||
or DATENAME if given."
|
||||
(unless datename
|
||||
(setq datename (buffer-file-name)))
|
||||
|
||||
|
@ -94,26 +86,22 @@ or DATENAME if given."
|
|||
Using the "date" associated with a file, we can create our standard timestamp:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun ha-journal-file-datestamp (&optional datename)
|
||||
(defun ha-journal-file-datestamp (&optional datename)
|
||||
"Return a string of the buffer's date (based on the file's name)."
|
||||
(format-time-string "%e %b %Y (%A)" (ha-journal-file-date datename)))
|
||||
#+end_src
|
||||
|
||||
Close the =use-package= call:
|
||||
#+begin_src emacs-lisp
|
||||
)
|
||||
#+end_src
|
||||
* Journal Capture
|
||||
Capturing a task (that when uncompleted, would then spillover to following days) could go to the daily journal entry. This requires a special function that opens today's journal, but specifies a non-nil prefix argument in order to inhibit inserting the heading, as =org-capture= will insert the heading.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun org-journal-find-location ()
|
||||
(defun org-journal-find-location ()
|
||||
(org-journal-new-entry t)
|
||||
(org-narrow-to-subtree)
|
||||
(goto-char (point-max)))
|
||||
|
||||
(defvar org-capture-templates (list))
|
||||
(add-to-list 'org-capture-templates
|
||||
(defvar org-capture-templates (list))
|
||||
(add-to-list 'org-capture-templates
|
||||
'("j" "Journal Task/Entry" plain
|
||||
(function org-journal-find-location)
|
||||
"* %?\n\n %i\n\n From: %a"
|
||||
|
@ -123,7 +111,7 @@ Capturing a task (that when uncompleted, would then spillover to following days)
|
|||
Sometimes it is obvious what is the /next file/ based on the one I'm currently reading. For instance, in my journal entries, the filename is a number that can be incremented. Same with presentation files...
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun split-string-with-number (string)
|
||||
(defun split-string-with-number (string)
|
||||
"Returns a list of three components of the string, the first is
|
||||
the text prior to any numbers, the second is the embedded number,
|
||||
and the third is the rest of the text in the string."
|
||||
|
@ -138,7 +126,7 @@ Sometimes it is obvious what is the /next file/ based on the one I'm currently r
|
|||
Which means that the following defines this function:
|
||||
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(ert-deftest split-string-with-number-test ()
|
||||
(ert-deftest split-string-default-separatorsg-with-number-test ()
|
||||
(should (equal (split-string-with-number "abc42xyz") '("abc" "42" "xyz")))
|
||||
(should (equal (split-string-with-number "42xyz") '("" "42" "xyz")))
|
||||
(should (equal (split-string-with-number "abc42") '("abc" "42" "")))
|
||||
|
@ -149,7 +137,7 @@ Which means that the following defines this function:
|
|||
Given this splitter function, we create a function that takes some sort of operator and return a new filename based on the conversion that happens:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun find-file-number-change (f)
|
||||
(defun find-file-number-change (f)
|
||||
(let* ((filename (buffer-file-name))
|
||||
(parts (split-string-with-number
|
||||
(file-name-base filename)))
|
||||
|
@ -164,7 +152,7 @@ Given this splitter function, we create a function that takes some sort of opera
|
|||
And this allows us to create two simple functions that can load the "next" and "previous" files:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun find-file-increment ()
|
||||
(defun find-file-increment ()
|
||||
"Takes the current buffer, and loads the file that is 'one
|
||||
more' than the file contained in the current buffer. This
|
||||
requires that the current file contain a number that can be
|
||||
|
@ -174,7 +162,7 @@ And this allows us to create two simple functions that can load the "next" and "
|
|||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun find-file-decrement ()
|
||||
(defun find-file-decrement ()
|
||||
"Takes the current buffer, and loads the file that is 'one
|
||||
less' than the file contained in the current buffer. This
|
||||
requires that the current file contain a number that can be
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
#+TITLE: Journal Entry- `(ha-journal-file-datestamp)`
|
||||
#+title: Journal Entry- `(ha-journal-file-datestamp)`
|
||||
|
||||
$0
|
||||
|
|
Loading…
Reference in a new issue