aboutsummaryrefslogtreecommitdiffstats
path: root/oni-org
diff options
context:
space:
mode:
Diffstat (limited to 'oni-org')
-rw-r--r--oni-org/Eldev7
-rw-r--r--oni-org/capture-templates/laundry.org23
-rw-r--r--oni-org/capture-templates/morning-checklist-bedding.org5
-rw-r--r--oni-org/capture-templates/morning-checklist-trash.org5
-rw-r--r--oni-org/capture-templates/morning-checklist.org15
-rw-r--r--oni-org/oni-org.el124
-rw-r--r--oni-org/snippets/org-mode/codeblock7
-rw-r--r--oni-org/snippets/org-mode/heading9
-rw-r--r--oni-org/snippets/org-mode/project51
-rw-r--r--oni-org/snippets/org-mode/snippet14
-rw-r--r--oni-org/snippets/org-mode/task10
11 files changed, 121 insertions, 149 deletions
diff --git a/oni-org/Eldev b/oni-org/Eldev
index 7c2d187..225ee09 100644
--- a/oni-org/Eldev
+++ b/oni-org/Eldev
@@ -4,10 +4,12 @@
(eldev-use-package-archive 'gnu-elpa)
;(eldev-use-package-archive 'nongnu-elpa)
(eldev-use-package-archive 'melpa)
-(eldev-use-package-archive `("oni" . ,(expand-file-name "../bin")))
+(eldev-use-package-archive `("oni" . ,(expand-file-name "../public/packages")))
(eldev-use-local-dependency
- (car (directory-files (format "%s/share/emacs/site-lisp" (getenv "GUIX_ENVIRONMENT"))
+ (car (directory-files (format "%s/share/emacs/site-lisp"
+ (or (getenv "GUIX_ENVIRONMENT")
+ (expand-file-name "~/.guix-profile")))
t "org-pretty-table" nil 1)))
(eldev-use-plugin 'autoloads)
@@ -15,6 +17,5 @@
(setf eldev-files-to-package
`(:or ,eldev-files-to-package
'("*.el"
- "./snippets/**/*"
"./icons/**/*"
"./capture-templates/**/*")))
diff --git a/oni-org/capture-templates/laundry.org b/oni-org/capture-templates/laundry.org
new file mode 100644
index 0000000..19b3d65
--- /dev/null
+++ b/oni-org/capture-templates/laundry.org
@@ -0,0 +1,23 @@
+* NEXT Wash a load of laundry
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:TRIGGER: next-sibling todo!(NEXT)
+:END:
+* TODO Dry a load of laundry
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:TRIGGER: next-sibling todo!(NEXT)
+:END:
+* TODO Fold a load of laundry
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:TRIGGER: next-sibling todo!(NEXT)
+:END:
+* TODO Put away a load of laundry
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:END:
diff --git a/oni-org/capture-templates/morning-checklist-bedding.org b/oni-org/capture-templates/morning-checklist-bedding.org
new file mode 100644
index 0000000..b3eb6ff
--- /dev/null
+++ b/oni-org/capture-templates/morning-checklist-bedding.org
@@ -0,0 +1,5 @@
+* NEXT Kids Bedding
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:END:
diff --git a/oni-org/capture-templates/morning-checklist-trash.org b/oni-org/capture-templates/morning-checklist-trash.org
new file mode 100644
index 0000000..2f5e8a6
--- /dev/null
+++ b/oni-org/capture-templates/morning-checklist-trash.org
@@ -0,0 +1,5 @@
+* NEXT Put trash out
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:END:
diff --git a/oni-org/capture-templates/morning-checklist.org b/oni-org/capture-templates/morning-checklist.org
new file mode 100644
index 0000000..a8fa37b
--- /dev/null
+++ b/oni-org/capture-templates/morning-checklist.org
@@ -0,0 +1,15 @@
+* NEXT Dishes
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:END:
+* NEXT Snacks
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:END:
+* NEXT Lunches
+:PROPERTIES:
+:CATEGORY: life
+:CREATED: %U
+:END:
diff --git a/oni-org/oni-org.el b/oni-org/oni-org.el
index 444a508..1c6ef2f 100644
--- a/oni-org/oni-org.el
+++ b/oni-org/oni-org.el
@@ -4,8 +4,8 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2026.0324.011543
-;; Package-Requires: (oni-yasnippet oni-hydra org org-edna diminish olivetti org-pretty-table)
+;; Version: 2026.0707.150746
+;; Package-Requires: (oni-hydra org org-edna diminish olivetti)
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -38,6 +38,7 @@
(require 'color)
(require 'diminish)
(require 'hydra)
+(require 'map)
(require 'ob)
(require 'org)
(require 'org-clock)
@@ -46,10 +47,13 @@
(require 'org-faces)
(require 'org-habit)
(require 'org-protocol)
-(require 'org-roam)
(require 'range)
(require 'subr-x)
-(require 'yasnippet)
+
+(use-package org-pretty-table
+ :vc (:url "https://github.com/Fuco1/org-pretty-table.git"
+ :rev :newest)
+ :hook (org-mode))
;;; Constants
@@ -59,10 +63,6 @@
(buffer-file-name)))
"The directory where ‘oni-org’ was loaded from.")
-(defconst oni-org-snippets-dir
- (expand-file-name "snippets" oni-org-root)
- "The directory where ‘oni-org’ stores its snippets.")
-
(defconst oni-org-icons-dir
(expand-file-name "icons" oni-org-root)
"The directory where ‘oni-org’ stores its icons.")
@@ -152,12 +152,6 @@ located at the start of the line."
(setq-local yas-buffer-local-condition
'(looking-back (rx line-start (one-or-more (not space))))))
-(defun oni-org-snippets-initialize ()
- "Initialize the snippets for ‘oni-org’."
- (when (boundp 'yas-snippet-dirs)
- (add-to-list 'yas-snippet-dirs oni-org-snippets-dir t))
- (yas-load-directory oni-org-snippets-dir))
-
(defun oni-org-maybe-change-to-wip-state (current-state)
"Change the state of the current task to in-progress CURRENT-STATE is todo."
(if (and (not org-capture-mode)
@@ -189,7 +183,7 @@ located at the start of the line."
(if-let ((keywords (cl-remove-if (lambda (tag) (assoc tag org-todo-keyword-faces))
org-todo-keywords-1)))
(append org-todo-keyword-faces
- (mapcar (lambda (keyword) (cons keyword (oni-org-color-for keyword)))
+ (mapcar (lambda (keyword) (cons keyword (list :background (oni-org-color-for keyword) :foreground "#111414" :weight 'bold :box (yoshi-theme--make-inline-box (oni-org-color-for keyword)))))
keywords))
org-todo-keyword-faces))
@@ -252,8 +246,8 @@ _di_: Add inlineimages STARTUP
("t" (org-capture nil "t"))
("A" (org-capture nil "a"))
("j" (org-capture nil "j"))
- ("f" org-roam-node-find)
- ("i" org-roam-node-insert)
+ ("f" oni-org-find-node)
+ ;; ("i" org-roam-node-insert)
("di" oni-org-document-add-inline-images-startup))
(defun oni-org-in-dblock-p ()
@@ -345,7 +339,7 @@ and not a state update."
(org-update-all-dblocks)))
(setq org-todo-keywords
- '((sequence "TODO(t)" "WIP" "WAITING(W@)" "|" "DONE(d!)")
+ '((sequence "TODO(t)" "NEXT(n)" "WIP" "WAITING(W@)" "|" "DONE(d!)")
(sequence "|" "CANCELLED(c@)")))
(add-hook 'org-after-todo-state-change-hook 'oni-org-todo-maybe-hide-body)
@@ -372,7 +366,6 @@ and not a state update."
(add-hook 'org-mode-hook 'flyspell-mode)
(add-hook 'org-mode-hook 'olivetti-mode)
(add-hook 'org-mode-hook 'org-indent-mode)
-(add-hook 'org-mode-hook 'org-pretty-table-mode)
(add-hook 'org-mode-hook 'variable-pitch-mode)
(add-hook 'org-mode-hook 'visual-line-mode)
(add-hook 'org-mode-hook 'yas-minor-mode)
@@ -385,10 +378,6 @@ and not a state update."
;;;###autoload
(global-set-key (kbd "C-<home>") #'oni-org-open-index)
-(with-eval-after-load 'org
- (with-eval-after-load 'yasnippet
- (oni-org-snippets-initialize)))
-
(with-eval-after-load 'org-edna (diminish 'org-edna-mode))
(with-eval-after-load 'org-id
@@ -467,6 +456,12 @@ and not a state update."
display-buffer-in-previous-window
(inhibit-same-window . t)))
+;;;;; Custom Commands
+
+(setf (map-elt org-agenda-custom-commands "n")
+ '("NEXT items"
+ ((todo "NEXT"))))
+
;;;; Capture
(require 'org-capture)
@@ -995,27 +990,9 @@ This is done by adding a ‘:hidden t’ header argument to the code block."
,(/ (length text) 2)))))
text))
-(defmacro oni-org--map-put (collection key value)
- "The result of ‘(setf (map-elt ...) ...)’ on a list.
-Trying to byte-compile the above form doesn't work at the moment.
-This is a temporary hack to make sure I don't have to repeat this
-same code all the time."
- (declare (indent 2))
- (let ((key-name (gensym))
- (value-name (gensym)))
- `(let ((,key-name ,key)
- (,value-name ,value))
- (condition-case nil
- (with-no-warnings
- (map-put! ,collection ,key-name ,value-name nil))
- (map-not-inplace
- (setq ,collection
- (map-insert ,collection ,key-name ,value-name))
- ,value-name)))))
-
(defvar oni-org--capture-D-date nil)
-(oni-org--map-put org-capture-templates "D"
- '("A DONE item for my to-done list." entry (file oni-org-todo-main-file) "* DONE %?
+(setf (map-elt org-capture-templates "D")
+ '("A DONE item for my to-done list." entry (file oni-org-todo-main-file) "* DONE %?
CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-format t t) (org-read-date t t nil \"Date: \")))
:PROPERTIES:
:CREATED: %(progn oni-org--capture-D-date)
@@ -1023,39 +1000,71 @@ CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-forma
:LOGBOOK:
- State \"DONE\" from \"TODO\" %(progn oni-org--capture-D-date)
:END:"
- :after-finalize (lambda () (setq oni-org--capture-D-date nil))))
+ :after-finalize (lambda () (setq oni-org--capture-D-date nil))))
-(oni-org--map-put org-capture-templates "t"
- '("A simple TODO item." entry (file "") "* TODO %?
+(setf (map-elt org-capture-templates "t")
+ '("A simple TODO item." entry (file "") "* TODO %?
:PROPERTIES:
:CREATED: %U
:END:"))
-(oni-org--map-put org-capture-templates "U"
- '("A TODO capture from the browser." entry (file "") "* TODO %:description
+(setf (map-elt org-capture-templates "U")
+ '("A TODO capture from the browser." entry (file "") "* TODO %:description
:PROPERTIES:
:CREATED: %U
:END:
%:link"
- :immediate-finish t))
+ :immediate-finish t))
(defun oni-org-find-new-note-file ()
(let ((title (read-string "Title: ")))
(find-file (expand-file-name (format "reference/%s-%s.org"
(format-time-string "%Y%m%d%H%M%S")
- (replace-regexp-in-string (rx whitespace) "-" (downcase title)))
+ (replace-regexp-in-string
+ (rx whitespace) "-"
+ (replace-regexp-in-string
+ (rx (not (any whitespace alnum)))
+ ""
+ (downcase title))))
oni-org-todo-dir))
(setq-local oni-org--capture-page-title title)))
-(oni-org--map-put org-capture-templates "p"
- '("A note page." plain (function oni-org-find-new-note-file) "#+TITLE: %(with-current-buffer (org-capture-get :buffer) oni-org--capture-page-title)
+(setf (map-elt org-capture-templates "p")
+ '("A note page." plain (function oni-org-find-new-note-file) "#+TITLE: %(with-current-buffer (org-capture-get :buffer) oni-org--capture-page-title)
#+DATE: %U
%?"
- :after-finalize (lambda () (when org-note-abort
- (delete-file (buffer-file-name (org-capture-get :buffer)) t)
- (kill-buffer (org-capture-get :buffer))))))
+ :after-finalize (lambda () (when org-note-abort
+ (delete-file (buffer-file-name (org-capture-get :buffer)) t)
+ (kill-buffer (org-capture-get :buffer))))))
+
+(setf (map-elt org-capture-templates "c")
+ '("Chores"))
+
+(setf (map-elt org-capture-templates "cl")
+ `("Laundry" entry (file ,oni-org-todo-main-file)
+ (file ,(expand-file-name "laundry.org" oni-org-capture-template-directory))
+ :immediate-finish t))
+
+(defun oni-org-get-morning-checklist ()
+ "Get the template for my morning checklist."
+ (let ((template (org-file-contents
+ (expand-file-name "morning-checklist.org" oni-org-capture-template-directory))))
+ (if (= 1 (decoded-time-weekday (decode-time)))
+ (concat template
+ (org-file-contents
+ (expand-file-name "morning-checklist-bedding.org" oni-org-capture-template-directory)))
+ (if (= 2 (decoded-time-weekday (decode-time)))
+ (concat template
+ (org-file-contents
+ (expand-file-name "morning-checklist-trash.org" oni-org-capture-template-directory)))
+ template))))
+
+(setf (map-elt org-capture-templates "cm")
+ `("Morning Checklist" entry (file ,oni-org-todo-main-file)
+ (function oni-org-get-morning-checklist)
+ :immediate-finish t))
(defun oni-org-insert-link (title entry)
(interactive
@@ -1076,6 +1085,11 @@ CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-forma
(file-relative-name (org-mem-entry-file entry))
title))))
+(defun oni-org-find-node ()
+ (interactive)
+ (let ((entries (mapcar (lambda (x) (cons (org-mem-title x) (org-mem-file x))) (org-mem-all-entries))))
+ (find-file (map-elt entries (completing-read "Header: " entries)))))
+
;;; Mastodon post dynamic block
(defun oni-org-dblock-write-mastodon-post (params)
diff --git a/oni-org/snippets/org-mode/codeblock b/oni-org/snippets/org-mode/codeblock
deleted file mode 100644
index a200b08..0000000
--- a/oni-org/snippets/org-mode/codeblock
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: codeblock
-# key: code
-# --
-#+begin_src $1
- $0
-#+end_src \ No newline at end of file
diff --git a/oni-org/snippets/org-mode/heading b/oni-org/snippets/org-mode/heading
deleted file mode 100644
index a472f06..0000000
--- a/oni-org/snippets/org-mode/heading
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- mode: snippet -*-
-# name: Heading
-# key: <t
-# --
-${1:*} ${2:TODO$(upcase yas-text)} $3
-:PROPERTIES:
-:CREATED: [`(format-time-string "%Y-%m-%d %a %H:%M")`]
-:END:
-$0 \ No newline at end of file
diff --git a/oni-org/snippets/org-mode/project b/oni-org/snippets/org-mode/project
deleted file mode 100644
index 269d655..0000000
--- a/oni-org/snippets/org-mode/project
+++ /dev/null
@@ -1,51 +0,0 @@
-# -*- mode: snippet -*-
-# name: project
-# key: project
-# --
-#+TITLE: ${1:project_name}
-#+LINK: src ${2:http://code.ryuslash.org/cgit.cgi/$3$1/}
-#+LINK: tar_gz $2${4:snapshot/$1-master}.tar.gz
-#+LINK: zip $2$4.zip
-#+STARTUP: showall
-
-#+begin_html
- <script src="/keyjs.js" type="text/javascript"></script>
- <script type="text/javascript">
- keyjs_initialize({ "u": [ "keyjs_goto", "../index.html" ],
- "h": [ "keyjs_goto", "http://ryuslash.org" ] });
- </script>
-#+end_html
-
-#+INCLUDE: "dlmenu.inc"
-
-* About
-
- ${5:A short description about $1}
-
- | $0Status | $6 |
- | Language | $7 |
- | License | ${8:GPLv3} |
-
-* Why?
-
- ${9:Why did you even think of writing $1?}
-
-* Features
-
- ${10:$1 does...}
-
-* Dependencies
-
- ${11:$1 needs to have...}
-
-* Download
-
- ${12:To download $1...}
-
-* Install
-
- ${13:To install $1...}
-
-* Usage
-
- ${14:Using $1...} \ No newline at end of file
diff --git a/oni-org/snippets/org-mode/snippet b/oni-org/snippets/org-mode/snippet
deleted file mode 100644
index 67f15d5..0000000
--- a/oni-org/snippets/org-mode/snippet
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- mode: snippet -*-
-# name: snippet
-# key: snippet
-# --
-#+TITLE: ${1:snippet-name}
-#+OPTIONS: toc:nil
-
-* $1
-
- ${2:A short description abount $1}
-
- #+BEGIN_SRC $3 :tangle yes
-$0
- #+END_SRC \ No newline at end of file
diff --git a/oni-org/snippets/org-mode/task b/oni-org/snippets/org-mode/task
deleted file mode 100644
index af229d1..0000000
--- a/oni-org/snippets/org-mode/task
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- mode: snippet -*-
-# name: task
-# key: todo
-# --
-* TODO ${1:What is the outcome?}
-:PROPERTIES:
-:CREATED: [`(format-time-string "%Y-%m-%d %a %H:%M")`]
-:END:
-
-$0