aboutsummaryrefslogtreecommitdiffstats
path: root/oni-org/oni-org.el
diff options
context:
space:
mode:
authorGravatar Tom Willemse2023-06-21 00:27:35 -0700
committerGravatar Tom Willemse2023-06-21 00:27:35 -0700
commit9fe6381afd2ecb14194cafd7de91bc05bc35863f (patch)
tree205c4152f85390b314ac2b9e44143b5fb00f7915 /oni-org/oni-org.el
parentc36f9ff2f76e7506145c6fb233531bc223f3f525 (diff)
downloademacs-config-9fe6381afd2ecb14194cafd7de91bc05bc35863f.tar.gz
emacs-config-9fe6381afd2ecb14194cafd7de91bc05bc35863f.zip
[oni-org] Get rid of any ‘(setf (map-elt ...) ...)’ occurrences
Right now this doesn't seem to work at all... It works fine when I evaluate this using ‘eval-defun’ or ‘eval-last-sexp’, but when I try to byte-compile it doesn't work. I've added my own custom macro that expands to the same thing that ‘(setf (map-elt ...) ...)’ should. I have forgotten how to write macros properly so I may have made some mistakes. This should only be temporary until I figure out why this is happening... it might just be that I'm using a version of Emacs built from a faulty commit.
Diffstat (limited to 'oni-org/oni-org.el')
-rw-r--r--oni-org/oni-org.el178
1 files changed, 98 insertions, 80 deletions
diff --git a/oni-org/oni-org.el b/oni-org/oni-org.el
index 63069a1..453e74c 100644
--- a/oni-org/oni-org.el
+++ b/oni-org/oni-org.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2023.0613.234632
+;; Version: 2023.0621.002708
;; Package-Requires: (oni-yasnippet oni-alert oni-hydra org org-bullets org-edna diminish all-the-icons olivetti form-feed org-pretty-table)
;; This program is free software; you can redistribute it and/or modify
@@ -1162,100 +1162,118 @@ This is done by adding a ‘:hidden t’ header argument to the code block."
,(/ (length text) 2)))))
text))
-(setf (map-elt org-agenda-custom-commands "o")
- '("Overview" ((tags-todo "TODO=\"WAITING\""
- ((org-agenda-overriding-header (oni-org--center-align "Waiting"))))
- (tags-todo "TODO=\"WIP\""
- ((org-agenda-overriding-header (oni-org--center-align "In Progress"))))
- (agenda "" ((org-agenda-span 'day)))
- (tags-todo "TODO=\"TODO\"+#todo"
- ((org-agenda-max-todos 10)
- (org-agenda-overriding-header (oni-org--center-align "To Do"))))
- (tags-todo "TODO=\"TODO\"+#reading"
- ((org-agenda-max-todos 5)
- (org-agenda-overriding-header (oni-org--center-align "Read"))))
- (tags-todo "TODO=\"TODO\"+#watching"
- ((org-agenda-max-todos 5)
- (org-agenda-overriding-header (oni-org--center-align "Watch"))))
- (tags-todo "TODO=\"TODO\"+#listening"
- ((org-agenda-max-todos 5)
- (org-agenda-overriding-header (oni-org--center-align "Listen")))))))
-
-(setf (map-elt org-agenda-custom-commands "t")
- '("To Do" ((tags-todo "TODO=\"WAITING\"+#todo"
- ((org-agenda-overriding-header (oni-org--center-align "Waiting To Do"))))
- (tags-todo "TODO=\"WIP\"+#todo"
- ((org-agenda-overriding-header (oni-org--center-align "Doing"))))
- (tags-todo "TODO=\"TODO\"+#todo"
- ((org-agenda-overriding-header (oni-org--center-align "To Do")))))))
-
-(setf (map-elt org-agenda-custom-commands "r")
- '("Reading" ((tags-todo "TODO=\"WAITING\"+#reading"
- ((org-agenda-overriding-header (oni-org--center-align "Waiting To Read"))))
- (tags-todo "TODO=\"WIP\"+#reading"
- ((org-agenda-overriding-header (oni-org--center-align "Reading"))))
- (tags-todo "TODO=\"TODO\"+#reading"
- ((org-agenda-overriding-header (oni-org--center-align "To Read")))))))
-
-(setf (map-elt org-agenda-custom-commands "w")
- '("Watching" ((tags-todo "TODO=\"WAITING\"+#watching"
- ((org-agenda-overriding-header (oni-org--center-align "Waiting To Watch"))))
- (tags-todo "TODO=\"WIP\"+#watching"
- ((org-agenda-overriding-header (oni-org--center-align "Watching"))))
- (tags-todo "TODO=\"TODO\"+#watching"
- ((org-agenda-overriding-header (oni-org--center-align "To Watch")))))))
-
-(setf (map-elt org-agenda-custom-commands "l")
- '("Listening" ((tags-todo "TODO=\"WAITING\"+#listening"
- ((org-agenda-overriding-header (oni-org--center-align "Waiting To Listen To"))))
- (tags-todo "TODO=\"WIP\"+#listening"
- ((org-agenda-overriding-header (oni-org--center-align "Listening"))))
- (tags-todo "TODO=\"TODO\"+#listening"
- ((org-agenda-overriding-header (oni-org--center-align "To Listen To")))))))
-
-(setf (map-elt org-capture-templates "sE")
- '("Questions for Emacs packages" plain (function ignore)
- "- Do I want to integrate this in my configuration?
+(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)))))
+
+(oni-org--map-put org-agenda-custom-commands "o"
+ '("Overview" ((tags-todo "TODO=\"WAITING\""
+ ((org-agenda-overriding-header (oni-org--center-align "Waiting"))))
+ (tags-todo "TODO=\"WIP\""
+ ((org-agenda-overriding-header (oni-org--center-align "In Progress"))))
+ (agenda "" ((org-agenda-span 'day)))
+ (tags-todo "TODO=\"TODO\"+#todo"
+ ((org-agenda-max-todos 10)
+ (org-agenda-overriding-header (oni-org--center-align "To Do"))))
+ (tags-todo "TODO=\"TODO\"+#reading"
+ ((org-agenda-max-todos 5)
+ (org-agenda-overriding-header (oni-org--center-align "Read"))))
+ (tags-todo "TODO=\"TODO\"+#watching"
+ ((org-agenda-max-todos 5)
+ (org-agenda-overriding-header (oni-org--center-align "Watch"))))
+ (tags-todo "TODO=\"TODO\"+#listening"
+ ((org-agenda-max-todos 5)
+ (org-agenda-overriding-header (oni-org--center-align "Listen")))))))
+
+(oni-org--map-put org-agenda-custom-commands "t"
+ '("To Do" ((tags-todo "TODO=\"WAITING\"+#todo"
+ ((org-agenda-overriding-header (oni-org--center-align "Waiting To Do"))))
+ (tags-todo "TODO=\"WIP\"+#todo"
+ ((org-agenda-overriding-header (oni-org--center-align "Doing"))))
+ (tags-todo "TODO=\"TODO\"+#todo"
+ ((org-agenda-overriding-header (oni-org--center-align "To Do")))))))
+
+(oni-org--map-put org-agenda-custom-commands "r"
+ '("Reading" ((tags-todo "TODO=\"WAITING\"+#reading"
+ ((org-agenda-overriding-header (oni-org--center-align "Waiting To Read"))))
+ (tags-todo "TODO=\"WIP\"+#reading"
+ ((org-agenda-overriding-header (oni-org--center-align "Reading"))))
+ (tags-todo "TODO=\"TODO\"+#reading"
+ ((org-agenda-overriding-header (oni-org--center-align "To Read")))))))
+
+(oni-org--map-put org-agenda-custom-commands "w"
+ '("Watching" ((tags-todo "TODO=\"WAITING\"+#watching"
+ ((org-agenda-overriding-header (oni-org--center-align "Waiting To Watch"))))
+ (tags-todo "TODO=\"WIP\"+#watching"
+ ((org-agenda-overriding-header (oni-org--center-align "Watching"))))
+ (tags-todo "TODO=\"TODO\"+#watching"
+ ((org-agenda-overriding-header (oni-org--center-align "To Watch")))))))
+
+(oni-org--map-put org-agenda-custom-commands "l"
+ '("Listening" ((tags-todo "TODO=\"WAITING\"+#listening"
+ ((org-agenda-overriding-header (oni-org--center-align "Waiting To Listen To"))))
+ (tags-todo "TODO=\"WIP\"+#listening"
+ ((org-agenda-overriding-header (oni-org--center-align "Listening"))))
+ (tags-todo "TODO=\"TODO\"+#listening"
+ ((org-agenda-overriding-header (oni-org--center-align "To Listen To")))))))
+
+(oni-org--map-put org-capture-templates "sE"
+ '("Questions for Emacs packages" plain (function ignore)
+ "- Do I want to integrate this in my configuration?
- %?
- What will it add / What advantage will it bring?
-
- How would I integrate it with my config?
- "
- :empty-lines 1
- :immediate-finish t
- :jump-to-captured t))
-(setf (map-elt org-capture-templates-contexts "sE")
- '(((in-mode . "org-mode"))))
-
-(setf (map-elt org-capture-templates "se")
- '("Questions for Emacs articles" plain (function ignore)
- "- What can I add to my config from this?
+ :empty-lines 1
+ :immediate-finish t
+ :jump-to-captured t))
+(oni-org--map-put org-capture-templates-contexts "sE"
+ '(((in-mode . "org-mode"))))
+
+(oni-org--map-put org-capture-templates "se"
+ '("Questions for Emacs articles" plain (function ignore)
+ "- What can I add to my config from this?
- %?"
- :empty-lines 1
- :immediate-finish t
- :jump-to-captured t))
-(setf (map-elt org-capture-templates-contexts "se")
- '(((in-mode . "org-mode"))))
-
-(setf (map-elt org-capture-templates "s")
- '("Snippets"))
-(setf (map-elt org-capture-templates-contexts "s")
- '(((in-mode . "org-mode"))))
-
-(setf (map-elt org-capture-templates "t")
- '("A simple TODO item." entry (file "") "* TODO %?
+ :empty-lines 1
+ :immediate-finish t
+ :jump-to-captured t))
+(oni-org--map-put org-capture-templates-contexts "se"
+ '(((in-mode . "org-mode"))))
+
+(oni-org--map-put org-capture-templates "s"
+ '("Snippets"))
+(oni-org--map-put org-capture-templates-contexts "s"
+ '(((in-mode . "org-mode"))))
+
+(oni-org--map-put org-capture-templates "t"
+ '("A simple TODO item." entry (file "") "* TODO %?
:PROPERTIES:
:CREATED: %U
:END:"))
-(setf (map-elt org-capture-templates "U")
- '("A TODO capture from the browser." entry (file "") "* TODO %:description
+(oni-org--map-put 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))
(provide 'oni-org)
;;; oni-org.el ends here