Compare commits

..

200 Commits

Author SHA1 Message Date
Nathan Dwarshuis 3037d399b0 ENH update packages 2024-08-18 10:05:16 -04:00
Nathan Dwarshuis 99a7bdbcc9 ENH update packages 2024-08-11 10:34:00 -04:00
Nathan Dwarshuis 955c0e6a29 ENH update packages 2024-08-04 12:21:49 -04:00
Nathan Dwarshuis 4bcad96690 ENH update packages 2024-07-28 09:53:20 -04:00
Nathan Dwarshuis 53b136fed8 ENH update packages 2024-07-21 10:12:24 -04:00
Nathan Dwarshuis 99f8e459c5 ENH update packages 2024-07-14 08:05:50 -04:00
Nathan Dwarshuis 4664df1312 ENH don't use useless calendar 2024-07-07 10:57:52 -04:00
Nathan Dwarshuis a2fed80ae7 ENH update packages 2024-07-07 10:35:06 -04:00
Nathan Dwarshuis e375584661 ENH update packages 2024-06-30 14:46:16 -04:00
Nathan Dwarshuis d52ae5bd22 ENH update packages 2024-06-23 15:47:51 -04:00
Nathan Dwarshuis 20a38ace1d ENH update packages 2024-06-16 06:42:54 -04:00
Nathan Dwarshuis c4d3477183 ENH update packages 2024-06-09 10:31:53 -04:00
Nathan Dwarshuis 7425f53b94 ENH update packages 2024-06-02 20:49:57 -04:00
Nathan Dwarshuis 07b78d9cc7 ENH update packages 2024-05-26 09:45:35 -04:00
Nathan Dwarshuis c0fb175b28 ENH update packages 2024-05-19 09:53:26 -04:00
Nathan Dwarshuis 58c356237a ENH update packages 2024-05-12 11:48:26 -04:00
Nathan Dwarshuis e65b341abe ENH disable pyenv 2024-05-06 21:57:06 -04:00
Nathan Dwarshuis 6067be3d40 ENH update packages 2024-05-05 12:01:44 -04:00
Nathan Dwarshuis fa844f5e16 ENH update packages 2024-04-29 21:24:08 -04:00
Nathan Dwarshuis 1ff53fe043 ENH update packages 2024-04-21 10:41:16 -04:00
Nathan Dwarshuis 0d18d3efb6 ENH update packages 2024-04-14 10:51:47 -04:00
Nathan Dwarshuis 36d2040194 ENH update packages 2024-04-07 07:02:38 -04:00
Nathan Dwarshuis 13ab8b24bf ENH update packages 2024-03-31 08:21:25 -04:00
Nathan Dwarshuis 6624ce05bf FIX another quoting bug 2024-03-30 14:32:15 -04:00
Nathan Dwarshuis b18e7ac237 FIX mime type bugs 2024-03-30 14:28:04 -04:00
Nathan Dwarshuis cec9af4ecb ENH update packages 2024-03-17 10:33:00 -04:00
Nathan Dwarshuis 4aa2389cb0 ADD mbsync override script 2024-03-14 21:33:59 -04:00
Nathan Dwarshuis 0d17555500 FIX typo 2024-03-14 10:19:32 -04:00
Nathan Dwarshuis 6df300b58a ENH make email config modular 2024-03-14 10:19:08 -04:00
Nathan Dwarshuis 810f759d1c FIX mime type matching 2024-03-11 13:00:38 -04:00
Nathan Dwarshuis 8e7f54fea6 ENH update packages 2024-03-10 09:42:34 -04:00
Nathan Dwarshuis 3d4fe298ad FIX remove silly border around logo 2024-03-05 09:21:42 -05:00
Nathan Dwarshuis 4a71191a9d ENH disable systemd 2024-03-04 21:16:29 -05:00
Nathan Dwarshuis ebaf5055ef ADD restart options 2024-03-04 21:15:42 -05:00
Nathan Dwarshuis b04ba759c9 ADD master control file 2024-03-04 20:49:16 -05:00
Nathan Dwarshuis 520477884b ADD toggle for light and dark mode 2024-03-04 15:31:55 -05:00
Nathan Dwarshuis 24c327dfd9 ENH update packages 2024-03-03 10:20:10 -05:00
Nathan Dwarshuis caaa0d4597 ENH remove journal from org 2024-03-03 10:20:03 -05:00
Nathan Dwarshuis e27ecc5547 ENH make junk a bit more symbolically sassay 2024-02-29 09:43:00 -05:00
Nathan Dwarshuis db5b994d9e ADD mu4e spam folder 2024-02-28 22:43:19 -05:00
Nathan Dwarshuis 723955a12d ENH update packages 2024-02-25 10:24:03 -05:00
Nathan Dwarshuis a6ef9a3bba ENH remove done entries from link menu 2024-02-19 18:07:49 -05:00
Nathan Dwarshuis 3c1808b652 ENH update packages 2024-02-18 08:15:07 -05:00
Nathan Dwarshuis df12172de1 ENH update packages 2024-02-11 10:25:22 -05:00
Nathan Dwarshuis 37353d6912 ENH update packages 2024-02-04 11:42:34 -05:00
Nathan Dwarshuis 69afcc47bc ENH update packages 2024-01-28 09:56:11 -05:00
Nathan Dwarshuis 3ff5ee83e7 ENH update packages 2024-01-22 10:09:13 -05:00
Nathan Dwarshuis 994635859a ENH update packages 2024-01-14 15:27:03 -05:00
Nathan Dwarshuis 003ea4b0f9 ADD reference targets I forgot 2024-01-12 09:52:36 -05:00
Nathan Dwarshuis 5234596b4c ENH update packages 2024-01-07 11:57:17 -05:00
Nathan Dwarshuis 5af5d4952e ENH commit git buffers in emacs natively 2024-01-07 11:05:03 -05:00
Nathan Dwarshuis acef51b7d6 ADD mu sync script 2024-01-07 10:03:25 -05:00
Nathan Dwarshuis a1010506d8 ADD startup scripts 2024-01-07 09:25:42 -05:00
Nathan Dwarshuis bc9842709c FIX silly bug 2024-01-01 21:52:17 -05:00
Nathan Dwarshuis 7b409b69c5 ENH update packages 2023-12-31 10:45:56 -05:00
Nathan Dwarshuis fb752313ee ENH update packages 2023-12-26 10:38:31 -05:00
Nathan Dwarshuis fd3c511a5d ENH update packages 2023-12-17 15:34:53 -05:00
Nathan Dwarshuis 58659bec49 ENH update packages 2023-12-10 16:21:17 -05:00
Nathan Dwarshuis c1aa4a63b1 ENH update packages 2023-12-03 10:29:59 -05:00
Nathan Dwarshuis ef69737080 ENH update packages 2023-11-26 22:39:08 -05:00
Nathan Dwarshuis 44dccfc006 ENH update packages 2023-11-20 10:23:34 -05:00
Nathan Dwarshuis a6f137d0db ENH update packages 2023-11-13 10:51:45 -05:00
Nathan Dwarshuis 237cf43c74 ENH update packages 2023-11-08 19:35:26 -05:00
Nathan Dwarshuis 65d4152d27 ENH update pckages 2023-10-29 19:45:25 -04:00
Nathan Dwarshuis 4071cf4f68 ENH update packages 2023-10-23 23:02:42 -04:00
Nathan Dwarshuis a45f0414d7 ENH update packages 2023-10-15 14:50:32 -04:00
Nathan Dwarshuis 307cb2676b ENH update packages 2023-10-08 17:18:57 -04:00
Nathan Dwarshuis 94c67f76eb ENH don't use pyenv hook unless we need it 2023-10-06 16:43:14 -04:00
Nathan Dwarshuis e18db58d0c ENH update packages 2023-10-01 15:44:09 -04:00
Nathan Dwarshuis cb1eda831f ENH update packages 2023-09-24 14:48:06 -04:00
Nathan Dwarshuis 894483c013 ENH update packages 2023-09-17 14:56:21 -04:00
Nathan Dwarshuis 0ae075ba75 ENH update packages 2023-09-12 10:32:52 -04:00
Nathan Dwarshuis 1d524aaff2 ENH update packages 2023-09-03 16:29:51 -04:00
Nathan Dwarshuis ea09d97957 ADD bats 2023-09-03 16:29:47 -04:00
Nathan Dwarshuis 39d0ddc2bd ENH update packages 2023-08-28 13:05:13 -04:00
Nathan Dwarshuis adbac12265 ENH update packages 2023-08-20 17:07:12 -04:00
Nathan Dwarshuis 0b98573f79 ENH upate packages 2023-08-13 14:42:12 -04:00
Nathan Dwarshuis 90b48c11b7 FIX ord folding and arrows 2023-08-13 14:42:04 -04:00
Nathan Dwarshuis ebda9d0079 ENH update packages 2023-08-06 23:26:39 -04:00
Nathan Dwarshuis 359e53f581 ENH update packages 2023-07-30 18:31:53 -04:00
Nathan Dwarshuis 34e031d440 ENH update packages 2023-07-23 14:31:08 -04:00
Nathan Dwarshuis d9f78ffb1f ENH update packages 2023-07-16 22:30:49 -04:00
Nathan Dwarshuis 214257ff55 FIX haskell-flycheck bug 2023-07-16 22:30:36 -04:00
Nathan Dwarshuis 7420de7ca3 FIX ess comint color thing 2023-07-09 16:12:12 -04:00
Nathan Dwarshuis 4a3bfe0231 ENH update packages 2023-07-09 14:34:46 -04:00
Nathan Dwarshuis 438bf90289 ENH update packages 2023-07-02 14:05:31 -04:00
Nathan Dwarshuis 64ab96f3cc ENH update packages 2023-06-25 16:10:54 -04:00
Nathan Dwarshuis 49c1ad7a40 ENH update packages 2023-06-18 19:30:54 -04:00
Nathan Dwarshuis eda78d7510 ENH update packages 2023-06-11 14:25:57 -04:00
Nathan Dwarshuis 7ee74cfc69 ENH update packages 2023-06-04 14:00:33 -04:00
Nathan Dwarshuis c32e345f24 ENH update packages 2023-05-28 14:02:09 -04:00
Nathan Dwarshuis 8e8434f8c5 ENH update packages 2023-05-22 21:57:19 -04:00
Nathan Dwarshuis 3048002a3b ENH update packages 2023-05-14 14:36:27 -04:00
Nathan Dwarshuis 571ad2adcd ENH update packages 2023-05-07 15:15:08 -04:00
Nathan Dwarshuis 0a928fa3d6 ENH update packages 2023-04-30 17:54:05 -04:00
Nathan Dwarshuis 04a06d7fa2 ENH update packages 2023-04-23 14:24:07 -04:00
Nathan Dwarshuis 7966b74502 ENH make email not clobber other windows 2023-04-16 17:30:35 -04:00
Nathan Dwarshuis 1b0ab263d3 ENH update packages 2023-04-16 17:29:48 -04:00
Nathan Dwarshuis 2f2be7db16 ENH update packages 2023-04-09 18:36:38 -04:00
Nathan Dwarshuis f040bba676 ENH remove org-mu4e (dead pacakage?) 2023-04-02 18:39:42 -04:00
Nathan Dwarshuis d540b7170d ENH update packages 2023-04-02 18:30:33 -04:00
Nathan Dwarshuis b5968b2016 ENH search for hlint binary properly in flycheck 2023-04-01 15:06:47 -04:00
Nathan Dwarshuis 773e23b81f ENH update mu maildir 2023-03-29 23:29:03 -04:00
Nathan Dwarshuis f262bb4cc1 ENH update packages 2023-03-26 15:34:16 -04:00
Nathan Dwarshuis 5397dde3a1 ENH update packages 2023-03-19 14:25:11 -04:00
Nathan Dwarshuis 39a5b01707 ENH don't depend on system files for python dev 2023-03-12 12:31:26 -04:00
Nathan Dwarshuis a7bfefd99b ENH update packages 2023-03-12 12:28:35 -04:00
Nathan Dwarshuis 3cd1464239 ADD nix 2023-03-12 12:28:29 -04:00
Nathan Dwarshuis 0ad7d01fc7 ENH update packages 2023-03-05 13:52:39 -05:00
Nathan Dwarshuis 94748930d5 ENH use better markdown mode 2023-03-05 13:52:31 -05:00
Nathan Dwarshuis bcf335a45f ENH update packages 2023-02-26 13:22:04 -05:00
Nathan Dwarshuis d790dbe3db ENH update versions 2023-02-19 16:03:43 -05:00
Nathan Dwarshuis e1e91664a5 ENH bump versions 2023-02-12 13:52:00 -05:00
Nathan Dwarshuis b7abf1ae1e ADD haskell flycheck mode to integrate better with cabal/stack 2023-02-12 13:51:42 -05:00
Nathan Dwarshuis e2ac704185 ENH update packages 2023-02-05 13:47:34 -05:00
Nathan Dwarshuis ccbe4b53f0 ENH update packages 2023-01-29 13:49:31 -05:00
Nathan Dwarshuis beaeb82f62 ENH update packages 2023-01-22 14:18:41 -05:00
Nathan Dwarshuis c0c67bed4d ENH update packages 2023-01-16 15:06:50 -05:00
Nathan Dwarshuis 97d3986ebe ENH use r-styler and default to rstudio style 2023-01-09 20:48:56 -05:00
Nathan Dwarshuis ade348c0d6 ENH update packages 2023-01-08 14:06:29 -05:00
Nathan Dwarshuis c8d9c5b373 ENH update packages 2023-01-01 13:37:30 -05:00
Nathan Dwarshuis 55e04349eb ENH use better formatter for haskell 2023-01-01 13:37:24 -05:00
Nathan Dwarshuis 51c6b0bd98 ENH increase dhall type check timeout 2022-12-21 22:51:13 -05:00
Nathan Dwarshuis 6c57f3c661 ENH update packages 2022-12-18 13:36:59 -05:00
Nathan Dwarshuis 08894d7161 ENH remove ledger 2022-12-11 13:01:56 -05:00
Nathan Dwarshuis 73fda400e4 ADD function to toggle dhall type check 2022-12-11 13:00:33 -05:00
Nathan Dwarshuis 5a26514c86 ENH update packages 2022-12-11 13:00:27 -05:00
Nathan Dwarshuis 1a2175cc84 ENH update packages 2022-12-04 13:22:47 -05:00
Nathan Dwarshuis d5047569ec ENH update packages 2022-11-27 14:50:40 -05:00
Nathan Dwarshuis e54a7c31cf ENH update packages 2022-11-20 13:28:58 -05:00
Nathan Dwarshuis ab375567d4 ENH update packages 2022-11-13 22:22:28 -05:00
Nathan Dwarshuis 986224403a ENH update packages 2022-11-05 11:57:15 -04:00
Nathan Dwarshuis f6b2b80f36 ENH update packages 2022-10-30 14:30:25 -04:00
Nathan Dwarshuis af878fe5c2 ENH update packages 2022-10-23 14:48:31 -04:00
Nathan Dwarshuis 5eced7a6a6 ENH don't hide markup (not worth it) 2022-10-16 19:11:46 -04:00
Nathan Dwarshuis 4089810579 ENH update packages 2022-10-16 15:42:57 -04:00
Nathan Dwarshuis b2d062e0bd ENH update packages 2022-10-02 14:38:27 -04:00
Nathan Dwarshuis 184c5ecde0 ENH update packages 2022-09-25 14:36:38 -04:00
Nathan Dwarshuis 768944edb1 REF remove all property drawers 2022-09-18 19:46:35 -04:00
Nathan Dwarshuis d6edb0dd27 REF remove TOC 2022-09-18 19:40:34 -04:00
Nathan Dwarshuis 43a55701b0 ENH update packages 2022-09-18 14:33:13 -04:00
Nathan Dwarshuis b1de625f0d ENH hide markdown markup by default 2022-09-17 19:09:49 -04:00
Nathan Dwarshuis 54bbdfa056 ENH hide org formatting by default 2022-09-17 19:07:01 -04:00
Nathan Dwarshuis 8c486c6aa2 ENH update packages 2022-09-11 14:19:07 -04:00
Nathan Dwarshuis 81274de278 ENH upate packages 2022-09-04 14:28:24 -04:00
Nathan Dwarshuis 8912a63ad7 ENH update packages 2022-08-28 16:22:05 -04:00
Nathan Dwarshuis adf94f0f0f ENH update packages 2022-08-21 15:33:39 -04:00
Nathan Dwarshuis 7770eabe38 ENH update packages 2022-08-14 14:46:11 -04:00
Nathan Dwarshuis 75a7bacb68 WIP add weekly tests 2022-08-14 14:46:05 -04:00
Nathan Dwarshuis 95e03b8eb7 ADD tests for ltg and svg nodes 2022-08-07 22:50:14 -04:00
Nathan Dwarshuis edb4c36eeb ENH update packages 2022-08-07 15:05:32 -04:00
Nathan Dwarshuis aa4e4dffae ADD dhall support 2022-08-06 18:47:52 -04:00
Nathan Dwarshuis d999489572 ENH make highlight modes toggle-able 2022-08-04 12:19:07 -04:00
Nathan Dwarshuis 8035566114 ENH make yaml readable 2022-08-02 12:02:16 -04:00
Nathan Dwarshuis 2e9166fec8 ENH make script to list runtime packages 2022-08-01 00:30:02 -04:00
Nathan Dwarshuis cadf7dbe5a ENH update packages 2022-07-31 15:26:50 -04:00
Nathan Dwarshuis 3d0370f92a ENH update packages 2022-07-24 14:47:03 -04:00
Nathan Dwarshuis 2c6aff682e FIX bugs 2022-07-21 22:49:58 -04:00
Nathan Dwarshuis 24c4701516 ADD straight boot 2022-07-21 18:26:45 -04:00
Nathan Dwarshuis 53e9cc898c ENH update packages 2022-07-17 15:54:04 -04:00
Nathan Dwarshuis 43d3ee862b ENH update packages 2022-07-10 10:23:02 -04:00
Nathan Dwarshuis 19fa7fdfe8 ENH update packages 2022-07-03 14:39:38 -04:00
Nathan Dwarshuis 4cea560dae ENH update install script 2022-06-29 20:51:39 -04:00
Nathan Dwarshuis 02a1069d3c ENH update mu4e symbols 2022-06-29 20:51:19 -04:00
Nathan Dwarshuis 029fcc8cbd ADD ledger mode 2022-06-29 20:51:11 -04:00
Nathan Dwarshuis 66f1844dbb ENH update packages 2022-06-27 20:26:39 -04:00
Nathan Dwarshuis 905a394b40 FIX turn off show-paren-mode 2022-06-21 16:30:18 -04:00
Nathan Dwarshuis ce76d10b65 FIX datetime typos 2022-06-19 14:21:56 -04:00
Nathan Dwarshuis 1b46baf90c ENH update packages 2022-06-19 14:21:35 -04:00
Nathan Dwarshuis 9c0a153872 ENH clean up system dep code 2022-06-14 20:29:44 -04:00
Nathan Dwarshuis efe3eac7c3 ADD test for project deadline 2022-06-12 19:32:38 -04:00
Nathan Dwarshuis ca17ee15d5 ADD a bunch of buffer status tests for actions 2022-06-12 18:07:10 -04:00
Nathan Dwarshuis d58c1b0458 ENH update packages 2022-06-12 15:41:58 -04:00
Nathan Dwarshuis 96a0bdd962 ENH use partitioned timestamps in action projects 2022-06-11 23:29:12 -04:00
Nathan Dwarshuis dc7c134045 ENH make iterator date logic simpler 2022-06-11 22:56:07 -04:00
Nathan Dwarshuis e4ae5ca4a1 ENH make errors for sub-iterators more precise (and working) 2022-06-11 20:13:49 -04:00
Nathan Dwarshuis 33ca950edc ADD a bunch of tests for actions 2022-06-10 19:34:11 -04:00
Nathan Dwarshuis 334681d6fc FIX typo 2022-06-10 19:34:03 -04:00
Nathan Dwarshuis 99a945ad0e ADD test helpers for left and plist 2022-06-08 19:27:16 -04:00
Nathan Dwarshuis eb84acd778 ADD barely useful dag test suite 2022-06-07 23:12:03 -04:00
Nathan Dwarshuis a2b738c704 FIX make new property drawers not demented 2022-06-07 22:53:19 -04:00
Nathan Dwarshuis e263af73ef ADD a bunch of org files to test with the dag framework 2022-06-07 22:53:05 -04:00
Nathan Dwarshuis b5fef3b7eb FIX random side effects when updating network status 2022-06-07 19:13:00 -04:00
Nathan Dwarshuis 4171bb788f FIX child scheds not being propagated in trees 2022-06-07 19:12:09 -04:00
Nathan Dwarshuis 94cefaa250 FIX ignore 'nodes' that don't have property drawers at all 2022-06-07 17:49:37 -04:00
Nathan Dwarshuis bd40a9bbf9 Merge branch 'propagate_scheduled' 2022-06-05 14:40:47 -04:00
Nathan Dwarshuis 730bd0caf8 ENH update packages 2022-06-05 14:40:31 -04:00
Nathan Dwarshuis df094e5344 FIX too many deadlined tasks 2022-06-05 13:32:17 -04:00
Nathan Dwarshuis 0b2b8d7c5a ENH update agenda itemizer 2022-06-05 13:26:33 -04:00
Nathan Dwarshuis d1ffcee540 ENH update archive functions to properly display iterators 2022-06-05 13:15:27 -04:00
Nathan Dwarshuis 1fc1f34df8 ENH kinda fix the incubator itemizer 2022-06-05 12:53:57 -04:00
Nathan Dwarshuis 1d3b70ac5b ENH update iterator itemizer 2022-06-05 12:52:09 -04:00
Nathan Dwarshuis cc1b881d40 ENH update status functions 2022-06-05 12:47:32 -04:00
Nathan Dwarshuis 4ae05ea339 ENH change action network status to use child scheduled timestamps (kinda) 2022-06-05 12:38:04 -04:00
Nathan Dwarshuis 69237c720e ENH make buffer status trees accululate scheduled timestamps 2022-06-05 12:27:12 -04:00
Nathan Dwarshuis a74dd98e4d WIP update action buffer status to use aggregated child scheduled timestamps 2022-06-02 23:35:20 -04:00
Nathan Dwarshuis edf2480b6f ENH make rankfold function accumulate "stuff" in parallel 2022-06-02 18:09:24 -04:00
Nathan Dwarshuis fb3b8f997d FIX typo 2022-06-02 17:33:53 -04:00
Nathan Dwarshuis e4a5de7ea2 Merge branch 'plan_trees' 2022-06-01 22:58:10 -04:00
Nathan Dwarshuis 40ec33fa5c ENH update packages 2022-05-17 18:44:02 -04:00
27 changed files with 2298 additions and 1456 deletions

4
.gitignore vendored
View File

@ -2,7 +2,9 @@
!.gitignore !.gitignore
!README.org !README.org
!init.el !init.el
!install_deps !straight-boot.el
!runtime_pkgs
!bin
# track versions of installed packages # track versions of installed packages
!straight !straight

21
bin/autogit Executable file
View File

@ -0,0 +1,21 @@
#!/bin/sh
### Add org file changes to git repo
for REPO in $1
do
echo "repository: $REPO"
eval "cd $REPO"
# check for errors
if ! git fsck --strict > /dev/null 2>&1; then
notify-send "Org git commit failed."
fi
# remove deleted files
git ls-files --deleted -z | xargs -0 git rm >/dev/null 2>&1
# add new files
git add . >/dev/null 2>&1
git commit -m "$(date)"
# push
git push origin master
done
echo Done

5
bin/emacs-start Executable file
View File

@ -0,0 +1,5 @@
#! /bin/bash
# start the emacs daemon
emacs --fg-daemon > /dev/null 2>&1

5
bin/emacs-stop Executable file
View File

@ -0,0 +1,5 @@
#! /bin/bash
# stop the emacs daemon
emacsclient --eval "(kill-emacs)"

76
bin/emacs_ctl Executable file
View File

@ -0,0 +1,76 @@
#!/bin/bash
state=/tmp/emacs-use-dark-mode
start_daemon () {
emacs --fg-daemon > /dev/null 2>&1
}
stop_daemon () {
emacsclient --eval "(kill-emacs)" 2> /dev/null
}
kill_daemon () {
killall emacsclient 2> /dev/null
killall emacs 2> /dev/null
}
restart_daemon () {
stop_daemon
start_daemon
}
hard_restart_daemon () {
kill_daemon
start_daemon
}
set_light () {
echo 0 > "$state"
}
set_dark () {
echo 1 > "$state"
}
if [[ -z "$1" ]]; then
echo "Need a command to perform"
exit 1
elif [[ "$1" == "start" ]]; then
start_daemon &
elif [[ "$1" == "stop" ]]; then
stop_daemon
elif [[ "$1" == "kill" ]]; then
kill_daemon
elif [[ "$1" == "restart" ]]; then
restart_daemon &
elif [[ "$1" == "hard_restart" ]]; then
hard_restart_daemon &
elif [[ "$1" == "theme" ]]; then
if [[ "$2" == "toggle" ]]; then
# if no state file assume light theme
if [[ ! -f "$state" ]]; then
set_light
elif [[ "$(cat $state)" == 0 ]]; then
set_dark
else
set_light
fi
elif [[ "$2" == "light" ]]; then
set_light
elif [[ "$2" == "dark" ]]; then
set_dark
else
echo 'Invlalid theme command'
exit 1
fi
if [ "$3" == "restart" ]; then
restart_daemon &
elif [ "$3" == "hard_restart" ]; then
hard_restart_daemon &
fi
else
echo 'Invalid command'
exit 1
fi

10
bin/mbsync Executable file
View File

@ -0,0 +1,10 @@
#! /bin/sh
rcpath=$XDG_CONFIG_HOME/emacs/local/lib/mu4e/mbsyncrc
if [ ! -f $rcpath ]; then
echo "mbsyncrc does not exist"
exit 1
fi
/usr/bin/mbsync -c "$rcpath" "$@"

12
bin/mu-index-emacs-maybe Executable file
View File

@ -0,0 +1,12 @@
#! /bin/sh
## indexes mu depending on whether emacs mu4e is running
## assume the mu server is only started by mu4e
if pgrep -fx '/usr/bin/mu server' > /dev/null; then
echo indexing mu through emacs
emacsclient -e '(mu4e-update-index)' > /dev/null
else
echo indexing mu natively
mu index
fi

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 14 KiB

38
init.el
View File

@ -1,42 +1,6 @@
;;;; init the straight package manager ;;;; init the straight package manager
;; disable automatic package updates (load-file (expand-file-name "straight-boot.el" user-emacs-directory))
(setq straight-check-for-modifications nil)
;; watch for repo modifications if we have python3 and watchexec
;; otherwise just use a save hook
;; (setq straight-check-for-modifications
;; (if (and (executable-find "python3")
;; (executable-find "watchexec"))
;; '(watch-files find-when-checking)
;; '(check-on-save find-when-checking)))
;; add pinned packages to straight
;; (setq straight-profiles
;; '((nil . "default.el")
;; ;; Packages which are pinned to a specific commit.
;; (pinned . "pinned.el")))
;; bootstrap straight
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
;; load experimental straight functions for pinning
;; (autoload #'straight-x-pull-all "straight-x")
;; (autoload #'straight-x-freeze-versions "straight-x")
;; install use-package itself
(straight-use-package 'use-package)
;; configure all config paths before anything else is loaded ;; configure all config paths before anything else is loaded
(use-package no-littering :straight t) (use-package no-littering :straight t)

View File

@ -1,18 +0,0 @@
#!/bin/bash
## Install all dependencies for emacs to run at full capacity
if emacs -batch -l "init.el"; then
IFS=' ' read -r -a emacs_pkgs \
< <(emacs -batch -l "init.el" --eval \
'(print (format "pkgs: %s" (s-join " " (nd/get-dependencies (list :pacman :aur)))))' \
2>/dev/null | \
sed -n -e 's/"pkgs: \(.*\)"/\1/p')
echo "Emacs requires the following system pkgs: ${emacs_pkgs[*]}"
else
echo "Could not get list of emacs dependencies."
emacs_pkgs=()
fi
MAKEFLAGS="-j$(nproc)" \
yay --needed --noconfirm --norebuild --removemake -S "${emacs_pkgs[@]}"

1
local/lib/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
mu4e

View File

@ -36,16 +36,20 @@ left/right slot."
;; monad-y things ;; monad-y things
(defmacro either>>= (either form) (defmacro either-as>>= (sym either form)
"Bind EITHER to FORM where the right slot is bound to 'it'." "Bind EITHER to FORM where the right slot is bound to SYM."
(declare (indent 1)) (declare (indent 2))
(let ((e (make-symbol "--either"))) (let ((e (make-symbol "--either")))
`(let ((,e ,either)) `(let ((,e ,either))
(pcase ,e (pcase ,e
(`(:left ,_) ,e) (`(:left ,_) ,e)
(`(:right ,it) ,form) (`(:right ,,sym) ,form)
(e (error "Learn to use monads, dummy; this isn't one: %s" e)))))) (e (error "Learn to use monads, dummy; this isn't one: %s" e))))))
(defmacro either>>= (either form)
"Bind EITHER to FORM where the right slot is bound to 'it'."
`(either-as>>= it ,either ,form))
(defun either-foldM (fun init xs) (defun either-foldM (fun init xs)
"Mondically apply FUN to XS (a list). "Mondically apply FUN to XS (a list).

File diff suppressed because it is too large Load Diff

View File

@ -1965,7 +1965,7 @@ and slow."
(org-ml-to-string) (org-ml-to-string)
(org-ml-build-node-property org-x-prop-created)))) (org-ml-build-node-property org-x-prop-created))))
(org-ml-update-this-headline* (org-ml-update-this-headline*
(org-ml-headline-map-node-properties* (cons np it) it)))) (org-ml-headline-map-node-properties* (-snoc it np) it))))
(defun org-x-set-expired-time (&optional arg) (defun org-x-set-expired-time (&optional arg)
"Set the expired time of the current headline. "Set the expired time of the current headline.

View File

@ -0,0 +1,223 @@
* projects
** TODO this is an active project
:PROPERTIES:
:ID: a98df83f-bc98-4767-b2bc-f1054dbf89f9
:CREATED: [2022-06-07 Tue 22:41]
:END:
*** NEXT this is a project task
:PROPERTIES:
:ID: 2db32ed8-0a1f-488c-8e41-dd3549ac8b1b
:CREATED: [2022-06-07 Tue 22:41]
:END:
** TODO this is an active project (scheduled)
:PROPERTIES:
:ID: 3788c7bc-390e-4caf-af8e-06831ff3276b
:CREATED: [2022-06-10 Fri 19:29]
:END:
*** TODO this is a scheduled task
SCHEDULED: <2022-06-10 Fri>
:PROPERTIES:
:ID: 19a7d558-e087-47ec-b686-feee29d352a1
:CREATED: [2022-06-10 Fri 19:29]
:END:
** TODO this is a waiting project
:PROPERTIES:
:ID: 26586b4d-7fc7-4a9f-b86f-e3c26a83a507
:CREATED: [2022-06-10 Fri 19:18]
:END:
*** WAIT this is a waiting subtask
:PROPERTIES:
:ID: cf58280a-ac7c-4951-a3de-a3f79f92f2b0
:CREATED: [2022-06-10 Fri 19:18]
:END:
** HOLD this is a held project
:PROPERTIES:
:ID: d5065c21-b717-41fe-8232-22afbd6b2243
:CREATED: [2022-06-10 Fri 19:14]
:END:
*** TODO this is a subtask masked by a hold
:PROPERTIES:
:ID: ee9c6ec9-7626-40f5-9f06-3c91bc1338ed
:CREATED: [2022-06-10 Fri 19:14]
:END:
** TODO this is a project held by a subtask
:PROPERTIES:
:ID: a771dc18-0c5f-4196-903d-ada3c8a9d817
:CREATED: [2022-06-10 Fri 19:15]
:END:
*** HOLD this is a held subtask
:PROPERTIES:
:ID: 4f743d31-2df4-4e32-85de-cedae0cffeb2
:CREATED: [2022-06-10 Fri 19:15]
:END:
** TODO this is a stuck project
:PROPERTIES:
:CREATED: [2022-06-07 Tue 22:41]
:ID: c93fe96f-7130-4433-a960-98c07a3b21f4
:END:
*** TODO this is a subtask
:PROPERTIES:
:ID: 2def43a3-e814-4793-adc7-38ddbbf30411
:CREATED: [2022-06-10 Fri 19:08]
:END:
** DONE this is a completed project
CLOSED: [2022-06-10 Fri 19:10]
:PROPERTIES:
:ID: 87682ef6-cd4c-41a7-8f0d-6ac41e572b05
:CREATED: [2022-06-10 Fri 19:10]
:END:
*** DONE this is a completed subtask
CLOSED: [2022-06-10 Fri 19:26]
:PROPERTIES:
:ID: 61866e72-7153-44d1-ae0f-af527fe5f9f4
:CREATED: [2022-06-10 Fri 19:10]
:END:
*** CANC this is a cancelled task
CLOSED: [2022-06-10 Fri 19:26]
:PROPERTIES:
:ID: 322af50a-f431-4940-8caf-cc5acdf5a555
:CREATED: [2022-06-10 Fri 19:25]
:END:
** CANC this is a cancelled project
CLOSED: [2022-06-10 Fri 19:13]
:PROPERTIES:
:ID: eca77dea-4a40-4697-a69d-d1ec798fe9ba
:CREATED: [2022-06-10 Fri 19:13]
:END:
*** TODO this is a subtask masked by a cancel
:PROPERTIES:
:ID: a834a585-acd1-44e9-8e62-17793146d6ab
:CREATED: [2022-06-10 Fri 19:13]
:END:
** TODO this is a deadlined project
DEADLINE: <2022-06-12 Sun>
:PROPERTIES:
:ID: 51798071-f860-48fb-b3d8-e526ce270290
:CREATED: [2022-06-12 Sun 18:09]
:END:
*** NEXT subtask
:PROPERTIES:
:ID: fc1f3dda-a4b7-4b0d-b37c-fa67e112023a
:CREATED: [2022-06-12 Sun 18:10]
:END:
:LOGGING:
- State "NEXT" from "TODO" [2022-06-12 Sun 18:10]
:END:
* iterators
** TODO this is an iterator
:PROPERTIES:
:ID: 2711e9b9-f765-415d-930f-b7ff16b3140b
:CREATED: [2022-06-07 Tue 22:41]
:PARENT_TYPE: iterator
:ARCHIVE: archive.org_archive::* something
:TIME_SHIFT: +1w
:END:
*** TODO repeated thing
SCHEDULED: <2022-06-07 Tue>
:PROPERTIES:
:ID: b02619f6-b9da-4d78-acdd-409a4c5d747b
:CREATED: [2022-06-07 Tue 22:41]
:END:
*** TODO repeated thing
SCHEDULED: <2022-06-14 Tue>
:PROPERTIES:
:ID: d1576921-41b6-4ca9-b775-8f4997983bc4
:CREATED: [2022-06-07 Tue 22:43]
:END:
*** TODO repeated thing
SCHEDULED: <2022-06-21 Tue>
:PROPERTIES:
:ID: a3653d7d-fd29-422e-83ac-06df2594c747
:CREATED: [2022-06-07 Tue 22:43]
:END:
** TODO this is an empty iterator
:PROPERTIES:
:ID: 15cfb339-358a-49ce-8cb3-9bcfb1c5a126
:CREATED: [2022-06-12 Sun 16:40]
:PARENT_TYPE: iterator
:ARCHIVE: archive.org_archive::* something
:TIME_SHIFT: +1w
:END:
** DONE this is a complete iterator
CLOSED: [2022-06-10 Fri 19:13]
:PROPERTIES:
:ID: f2002c13-5ddd-46ec-9895-67182d89dd19
:CREATED: [2022-06-12 Sun 16:44]
:PARENT_TYPE: iterator
:ARCHIVE: archive.org_archive::* something
:TIME_SHIFT: +1w
:END:
*** DONE subiter 1
CLOSED: [2022-06-10 Fri 19:13]
:PROPERTIES:
:ID: fa290644-ba9a-42ac-a25a-a0cca5704d44
:CREATED: [2022-06-12 Sun 16:44]
:END:
*** DONE subiter 2
CLOSED: [2022-06-12 Sun 16:44]
:PROPERTIES:
:ID: 4ec18d87-dda9-43a6-b5e3-4a633160cfec
:CREATED: [2022-06-12 Sun 16:44]
:END:
*** DONE subiter 3
CLOSED: [2022-06-12 Sun 16:44]
:PROPERTIES:
:ID: 30dfcebe-33e8-4190-9460-9bb439cb75e1
:CREATED: [2022-06-12 Sun 16:44]
:END:
** DONE this is a complete empty iterator
CLOSED: [2022-06-10 Fri 19:13]
:PROPERTIES:
:ID: 6ac25533-ba98-4cce-b8a3-9dcf2ada5d77
:CREATED: [2022-06-12 Sun 17:01]
:PARENT_TYPE: iterator
:ARCHIVE: archive.org_archive::* something
:TIME_SHIFT: +1w
:END:
** TODO iterator with projects
:PROPERTIES:
:ID: 6b33c33b-2ce8-405d-b2bb-917305dfa840
:CREATED: [2022-06-12 Sun 17:10]
:PARENT_TYPE: iterator
:ARCHIVE: archive.org_archive::* something
:TIME_SHIFT: +1w
:END:
*** TODO subiter project
:PROPERTIES:
:ID: ed5ff869-2d98-457e-8718-ebb0ca9c1e72
:CREATED: [2022-06-12 Sun 17:10]
:END:
**** TODO subsubiter task
SCHEDULED: <2022-06-12 Sun>
:PROPERTIES:
:ID: b49556a8-0ec3-487d-84bd-78bd29c9eaef
:CREATED: [2022-06-12 Sun 17:10]
:END:
**** TODO subsubiter task
SCHEDULED: <2022-06-14 Tue>
:PROPERTIES:
:ID: f6c2b3ff-66d6-418e-90ec-0d0643bd16ea
:CREATED: [2022-06-12 Sun 17:10]
:END:
* tasks
** TODO this is a standalone task
:PROPERTIES:
:ID: cda28b1a-2b7d-48ea-b1df-e006be799c2f
:CREATED: [2022-06-07 Tue 22:43]
:END:
* metadata tests
** header with a nice tag :nice_tag:
:PROPERTIES:
:ID: c5d3083b-7079-4f76-b8f8-0d994879d8f7
:CREATED: [2022-06-07 Tue 22:43]
:END:
*** TODO task with nice parent tag
:PROPERTIES:
:ID: 3de25d74-b90e-4c77-9f7f-8190187e7ed0
:CREATED: [2022-06-07 Tue 22:43]
:END:
** TODO task with a random local tag :random_tag:
:PROPERTIES:
:ID: e4876e82-c8c8-4ff8-ad23-f78e3904b927
:CREATED: [2022-06-12 Sun 16:34]
:END:

View File

@ -0,0 +1,10 @@
* TODO this is a project all by itself with one goal
:PROPERTIES:
:ID: 49436f7a-629b-4686-b681-c70c7a116ce7
:CREATED: [2022-06-07 Tue 22:45]
:END:
** TODO project task
:PROPERTIES:
:ID: 2f507e50-78ba-4f81-83ce-988358b98200
:CREATED: [2022-06-07 Tue 22:45]
:END:

View File

@ -0,0 +1,10 @@
* 2022 :Y22:
** June :M06:
*** 2022-06-07 :D07:
**** TODO buy boatload of cement for bunker
SCHEDULED: <2022-06-07 Tue>
:PROPERTIES:
:ID: 25ffaad9-d996-48b7-a387-10aa1d46fba8
:CREATED: [2022-06-07 Tue 22:52]
:END:

View File

@ -0,0 +1,18 @@
* TODO this endpoint goal has a parent
:PROPERTIES:
:ID: c2289aeb-f1f4-4e26-8878-f64157d3f724
:CREATED: [2022-06-07 Tue 22:37]
:END:
:X_PARENT_LINKS:
- LTG :: [[id:d6e92244-b1a0-4161-83bc-5a1f0af5541d][/be good at something]]
:END:
** TODO this is a child goal
:PROPERTIES:
:ID: c90f3351-cee6-426f-98ab-d5e9518983ac
:CREATED: [2022-06-07 Tue 22:38]
:END:
* TODO this one doesn't
:PROPERTIES:
:ID: 48322fb9-27c1-455b-a514-d8a4b4da5c2e
:CREATED: [2022-06-07 Tue 22:38]
:END:

View File

@ -0,0 +1,15 @@
* TODO be good at something
:PROPERTIES:
:ID: d6e92244-b1a0-4161-83bc-5a1f0af5541d
:CREATED: [2022-06-07 Tue 22:36]
:END:
* TODO don't be a dick
:PROPERTIES:
:ID: 06592f95-9cf5-4d7e-8546-da7796d76813
:CREATED: [2022-06-07 Tue 22:36]
:END:
** TODO say nice things
:PROPERTIES:
:ID: adc08873-b9fa-423d-950d-db645db05fe5
:CREATED: [2022-06-07 Tue 22:36]
:END:

View File

@ -0,0 +1,49 @@
* 2022 :Y22:
** Quarter 2 :Q2:
*** environmental :_env:
**** TODO something good for the environment
:PROPERTIES:
:ID: aa3e549c-b309-40a2-a687-6d9791653a18
:CREATED: [2022-06-07 Tue 22:48]
:END:
*** financial :_fin:
*** intellectual :_int:
*** metaphysical :_met:
*** physical :_phy:
**** TODO something physically pleasing
:PROPERTIES:
:ID: d6d4dbd9-4d8c-4a1c-81a4-a26776b9627b
:CREATED: [2022-06-07 Tue 22:48]
:END:
*** professional :_pro:
*** recreational :_rec:
*** social :_soc:
** Quarter 3 :Q3:
*** environmental :_env:
*** financial :_fin:
**** TODO make it raaaaaaaain
:PROPERTIES:
:ID: a1a68f4f-1749-425b-afdc-ef79bbe10417
:CREATED: [2022-06-07 Tue 22:49]
:END:
*** intellectual :_int:
**** TODO something that tickles my brain
:PROPERTIES:
:ID: 63259156-ce5d-442a-b6e4-fd4053239db5
:CREATED: [2022-06-07 Tue 22:48]
:END:
*** metaphysical :_met:
*** physical :_phy:
*** professional :_pro:
**** TODO be a wall street bro
:PROPERTIES:
:ID: 9e63d6aa-f217-422b-a996-d9612c972855
:CREATED: [2022-06-07 Tue 22:49]
:END:
*** recreational :_rec:
*** social :_soc:
**** TODO get a life
:PROPERTIES:
:ID: e9c2474f-1c27-4ba4-b46e-5d4e40d560b8
:CREATED: [2022-06-07 Tue 22:49]
:END:

View File

@ -0,0 +1,15 @@
* TODO don't die of hunger
:PROPERTIES:
:ID: 4e7a934a-62ec-4ed5-ab84-e9e7e745b495
:CREATED: [2022-06-07 Tue 22:39]
:END:
* TODO don't get nuked
:PROPERTIES:
:ID: 26bbf72f-51cf-40ba-a7dd-ca689bcd1627
:CREATED: [2022-06-07 Tue 22:40]
:END:
** TODO make a bunker
:PROPERTIES:
:ID: e16514a0-626c-476f-b647-1eaf6580c57a
:CREATED: [2022-06-07 Tue 22:40]
:END:

View File

@ -0,0 +1,71 @@
* 2022 :Y22:
** June :M06:
*** TODO 2022-06-06
SCHEDULED: <2022-06-06 Mon>
:PROPERTIES:
:ID: 76534d4a-e516-495c-b083-5b053c44af1d
:X-WEEK-LEN: 7
:END:
**** TODO Monday
SCHEDULED: <2022-06-06 Mon>
:PROPERTIES:
:ID: 6b53ee41-b467-4bfb-a580-6218a3c78068
:END:
***** DONE be social
CLOSED: [2022-08-07 Sun 23:28]
:PROPERTIES:
:ID: f02504bd-45f8-4da6-936e-1b15e043f3d4
:CREATED: [2022-06-07 Tue 22:50]
:END:
:LOGGING:
- State "DONE" from "TODO" [2022-08-07 Sun 23:28]
:END:
**** TODO Tuesday
SCHEDULED: <2022-06-07 Tue>
:PROPERTIES:
:ID: 93955806-3b04-4ee5-8be5-fb8a9117c6b7
:END:
**** TODO Wednesday
SCHEDULED: <2022-06-08 Wed>
:PROPERTIES:
:ID: 8b0de76b-fff9-4890-9e85-8f4ccabf4f12
:END:
***** TODO learn about bitcoin
:PROPERTIES:
:ID: ed1406ad-1231-46de-b026-8067411133dc
:CREATED: [2022-06-07 Tue 22:51]
:END:
**** TODO Thursday
SCHEDULED: <2022-06-09 Thu>
:PROPERTIES:
:ID: f977dca9-c8e6-47d0-a9cd-eba8194fcb96
:END:
**** TODO Friday
SCHEDULED: <2022-06-10 Fri>
:PROPERTIES:
:ID: 1d926eef-94c9-4b57-8cb0-225a308711e9
:END:
***** CANC learn to gamble
CLOSED: [2022-08-07 Sun 23:28]
:PROPERTIES:
:ID: ab077745-4041-458f-90ec-02aaecb2729d
:CREATED: [2022-06-07 Tue 22:51]
:END:
:LOGGING:
- State "CANC" from "TODO" [2022-08-07 Sun 23:28]
:END:
**** TODO Saturday
SCHEDULED: <2022-06-11 Sat>
:PROPERTIES:
:ID: 24659f4b-1e0d-4022-a4cc-359a7bb15592
:END:
***** TODO build nuclear bunker
:PROPERTIES:
:ID: bfe5d3c1-3b7d-46f9-9c60-8a2bdec08d6d
:CREATED: [2022-06-07 Tue 22:51]
:END:
**** TODO Sunday
SCHEDULED: <2022-06-12 Sun>
:PROPERTIES:
:ID: 541245c4-e51d-48ae-ab51-e29325d5c9fe
:END:

View File

@ -0,0 +1,442 @@
;;; org-x-dag-test.el --- Smesh my API -*- lexical-binding: t -*-
;; Copyright (C) 2015 Free Software Foundation, Inc.
;; 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
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; run tests with this (in the org-x directory above this one):
;; emacs -batch -l init.el -l local/lib/org-x/test/org-x-dag-test.el -f buttercup-run
;;; Code:
(require 's)
(require 'dash)
(require 'either)
(require 'org-x)
(defun setup ()
(setq org-directory (nd/expand-lib-directory "org-x/test/dag")
org-x-action-files (list "action1.org" "action2.org")
org-x-endpoint-goal-file "endpoint.org"
org-x-lifetime-goal-file "lifetime.org"
org-x-survival-goal-file "survival.org"
org-x-daily-plan-file "daily.org"
org-x-weekly-plan-file "weekly.org"
org-x-quarterly-plan-file "quarterly.org"))
(defun partition-timestamp (s)
(->> (org-ml-from-string 'timestamp s)
(org-x-dag-partition-timestamp)))
(defun timestamp-to-datetime (s)
(->> (org-ml-from-string 'timestamp s)
(org-ml-timestamp-get-start-time)))
(defun timestamp-to-epoch (s)
(->> (org-ml-from-string 'timestamp s)
(org-ml-timestamp-get-start-time)
(org-ml-time-to-unixtime)))
(buttercup-define-matcher :to-be-left-with (a x)
(cl-destructuring-bind
((a-expr . a) (x-expr . x))
(mapcar #'buttercup--expr-and-value (list a x))
(either-from a
(lambda (l)
(if (equal l x)
`(t . ,(format "Expected %s left with %s" a-expr x))
`(nil . ,(format "Expected %s left with %s, but got left with %s"
a-expr x l))))
(lambda ()
`(nil . ,(format "Expected %s to be a left, got a right" a-expr))))))
(buttercup-define-matcher :to-be-right-with (a x)
(cl-destructuring-bind
((a-expr . a) (x-expr . x))
(mapcar #'buttercup--expr-and-value (list a x))
(either-from a
(lambda ()
`(nil . ,(format "Expected %s to be a right, got a left" a-expr)))
(lambda (r)
(if (equal r x)
`(t . ,(format "Expected %s right with %s" a-expr x))
`(nil . ,(format "Expected %s right with %s, but got right with %s"
a-expr x r)))))))
(defun split-plists (eq-funs a b)
(cl-flet
((get-keys
(x)
(->> (-partition 2 x)
(-map #'car)))
(key-eq
(k)
(let ((av (plist-get a k))
(bv (plist-get b k))
(f (or (plist-get eq-funs k) #'equal)))
(funcall f av bv))))
(let* ((a* (get-keys a))
(b* (get-keys b))
(a- (-difference a* b*))
(b- (-difference b* a*))
(common (->> (-intersection a* b*)
(--reduce-from (if (key-eq it) acc
(cons (list it
(plist-get a it)
(plist-get b it))
acc))
nil))))
`(,a- ,b- ,common))))
(defun plists-equal-p (a b)
(equal (split-plists nil a b) '(nil nil nil)))
(defun element-equal-p (a b)
;; NOTE this does not compare children of elements/objects
(cl-flet
((get-useful-props
(node)
(->> (org-ml-get-all-properties node)
(-partition 2)
(--remove (memq (car it) '(:parent :begin :end :contents-begin :contents-end)))
(-flatten-n 1))))
(and (eq (org-ml-get-type a) (org-ml-get-type b))
(plists-equal-p (get-useful-props a) (get-useful-props b)))))
(defun pts-equal-p (a b)
(-let (((&plist :datetime da :repeater ra :warning wa :length la) a)
((&plist :datetime db :repeater rb :warning wb :length lb) b))
(and (equal da db)
(equal ra rb)
(equal wa wb)
(equal la lb))))
(defun plist-diff-msg (eq-funs expr a b)
(-let (((a-diff b-diff common-diffs) (split-plists eq-funs a b)))
(cond
((and a-diff b-diff)
(format "Expected %s to have keys '%s' and not to have keys '%s'"
expr b-diff a-diff))
(a-diff
(format "Expected %s not to have keys '%s'" expr a-diff))
(b-diff
(format "Expected %s to have keys '%s'" expr b-diff))
(common-diffs
(-let (((as bs)
(->> common-diffs
(--map `((,(car it) ,(nth 1 it)) (,(car it) ,(nth 2 it))))
(apply #'-zip-lists))))
(format "Expected %s to have key/value pairs '%s' but instead had '%s'"
expr as bs))))))
(defun status-diff-msg (eq-funs expr type subtype data to-test)
(-let* (((type* . rest) to-test)
((subtype* last) (-split-at (length subtype) rest))
(data* (car last)))
(cond
((not (eq type* type))
(format "Expected %s to have type '%s' but instead had type '%s'"
expr type type*))
((and subtype (not (equal subtype* subtype)))
(format "Expected %s to have subtype '%s' but instead had subtype '%s'"
expr subtype subtype*))
(t
(plist-diff-msg eq-funs expr data data*)))))
(defun ancestry-diff-msg (eq-funs expr ancestry inner-fun to-test)
(declare (indent 3))
(-let* (((&plist :ancestry A :local L) to-test))
(or (plist-diff-msg eq-funs expr A ancestry)
(funcall inner-fun L))))
(defun buffer-status-diff-msg (expr type inner-fun to-test)
(declare (indent 3))
(-let (((type* . rest) to-test))
(if (eq type type*) (funcall inner-fun rest)
(format "Expected buffer-status %s to be type '%s' but instead was type '%s'"
expr type type*))))
(defun right-diff-msg (expr inner-fun to-test)
(declare (indent 2))
(either-from to-test
(lambda ()
(format "Expected %s to be a right, got a left" expr))
inner-fun))
;; TODO this will eventually have canceled as part of it
(buttercup-define-matcher :id-to-be-tlg (to-test type status)
(cl-destructuring-bind
((test-expr . test) (_ . y) (_ . s))
(->> (list to-test type status)
(-map #'buttercup--expr-and-value))
(let ((f (->> (-partial #'status-diff-msg nil test-expr s nil nil)
(-partial #'buffer-status-diff-msg test-expr y)
(-partial #'right-diff-msg test-expr))))
(-if-let (m (funcall f (org-x-dag-id->bs test)))
(cons nil m)
(cons t (format "Expected '%s' not to be the indicated action" test-expr))))))
(buttercup-define-matcher :id-to-be-action (to-test canceled held deadline
type subtype data)
(cl-destructuring-bind
((test-expr . test) (_ . c) (_ . h) (_ . e) (_ . y) (_ . s) (_ . d))
(->> (list to-test canceled held deadline type subtype data)
(-map #'buttercup--expr-and-value))
(let* ((ancestry (list :canceled-parent-p c
:held-parent-p h
:parent-deadline e))
(ancestry-eq-funs nil)
(local-eq-funs (list :sched #'element-equal-p
:child-scheds #'pts-equal-p))
(f (->> (-partial #'status-diff-msg local-eq-funs test-expr y s d)
(-partial #'ancestry-diff-msg ancestry-eq-funs test-expr ancestry)
(-partial #'buffer-status-diff-msg test-expr :action)
(-partial #'right-diff-msg test-expr))))
(-if-let (m (funcall f (org-x-dag-id->bs test)))
(cons nil m)
(cons t (format "Expected '%s' not to be the indicated action" test-expr))))))
(buttercup-define-matcher :id-to-be-qtp (to-test status deadline date)
(cl-destructuring-bind
((test-expr . test) (_ . s) (_ . d) (_ . D))
(->> (list to-test status deadline date)
(-map #'buttercup--expr-and-value))
(let* ((local-eq-funs (list :deadline #'element-equal-p :date #'eq))
(abs-date (org-x-dag-date-to-absolute D))
(data (list :deadline d :date abs-date))
(f (->> (-partial #'status-diff-msg local-eq-funs test-expr s nil data)
(-partial #'buffer-status-diff-msg test-expr :quarterly)
(-partial #'right-diff-msg test-expr))))
(-if-let (m (funcall f (org-x-dag-id->bs test)))
(cons nil m)
(cons t (format "Expected '%s' not to be the indicated action" test-expr))))))
;; (buttercup-define-matcher :id-to-be-wkp (to-test status subtype date)
;; (cl-destructuring-bind
;; ((test-expr . test) (_ . s) (_ . y) (_ . d))
;; (->> (list to-test status subtype date)
;; (-map #'buttercup--expr-and-value))
;; (let* ((abs-date (org-x-dag-date-to-absolute d))
;; (f (->> (-partial #'status-diff-msg nil test-expr y `(,s) abs-date)
;; (-partial #'buffer-status-diff-msg test-expr :weekly)
;; (-partial #'right-diff-msg test-expr))))
;; (-if-let (m (funcall f (org-x-dag-id->bs test)))
;; (cons nil m)
;; (cons t (format "Expected '%s' not to be the indicated action" test-expr))))))
;; (buttercup-define-matcher :to-have-same-as-plist (a b)
;; (cl-destructuring-bind
;; ((a-expr . a) (b-expr . b))
;; (mapcar #'buttercup--expr-and-value (list a b))
;; (let* ((a* (-partition 2 a))
;; (b* (-partition 2 b))
;; (a-diff (->> (-difference a* b*) (--map (format "%S" it)) (s-join ", ")))
;; (b-diff (->> (-difference b* a*) (--map (format "%S" it)) (s-join ", "))))
;; (cond
;; ((and a-diff b-diff)
;; (cons nil (format "Expected %s to have pairs '%s' and not to have pairs '%s'"
;; a-expr b-diff a-diff)))
;; (a-diff
;; (cons nil (format "Expected %s not to have pairs '%s'" a-expr a-diff)))
;; (b-diff
;; (cons nil (format "Expected %s to have pairs '%s'" a-expr b-diff)))
;; (t
;; (cons t (format "Expected %s not to have same items as '%s'"
;; a-expr b-expr)))))))
(defmacro bs-ltg-active (id)
(declare (indent 1))
`(expect (org-x-dag-id->bs ,id) :to-be-right-with '(:lifetime :active)))
(describe "Sync DAG"
(before-all
(setup))
(it "Sync completes without error"
(expect (org-x-dag-sync t) :not :to-throw))
(describe "Lifetime buffer statuses"
(it "Active (toplevel)"
(expect "d6e92244-b1a0-4161-83bc-5a1f0af5541d" :id-to-be-tlg
:lifetime :active))
(it "Active (nested)"
(expect "adc08873-b9fa-423d-950d-db645db05fe5" :id-to-be-tlg
:lifetime :active)))
(describe "Survival buffer statuses"
(it "Active (toplevel)"
(expect "4e7a934a-62ec-4ed5-ab84-e9e7e745b495" :id-to-be-tlg
:survival :active))
(it "Active (nested)"
(expect "e16514a0-626c-476f-b647-1eaf6580c57a" :id-to-be-tlg
:survival :active)))
(describe "Action buffer statuses"
(describe "Projects"
(it "Active"
(expect "a98df83f-bc98-4767-b2bc-f1054dbf89f9" :id-to-be-action
nil nil nil :sp-proj '(:proj-active) '(:child-scheds nil)))
(it "Active (scheduled)"
(let ((sched (partition-timestamp "<2022-06-10 Fri>")))
(expect "3788c7bc-390e-4caf-af8e-06831ff3276b" :id-to-be-action
nil nil nil :sp-proj '(:proj-active)
`(:child-scheds (,sched)))))
(it "Wait"
(expect "26586b4d-7fc7-4a9f-b86f-e3c26a83a507" :id-to-be-action
nil nil nil :sp-proj '(:proj-wait) nil))
(it "Held (toplevel)"
(expect "d5065c21-b717-41fe-8232-22afbd6b2243" :id-to-be-action
nil nil nil :sp-proj '(:proj-held) nil))
(it "Held (subtask)"
(expect "a771dc18-0c5f-4196-903d-ada3c8a9d817" :id-to-be-action
nil nil nil :sp-proj '(:proj-held) nil))
(it "Stuck"
(expect "c93fe96f-7130-4433-a960-98c07a3b21f4" :id-to-be-action
nil nil nil :sp-proj '(:proj-stuck) nil))
(it "Completed"
(expect "87682ef6-cd4c-41a7-8f0d-6ac41e572b05" :id-to-be-action
nil nil nil :sp-proj '(:proj-complete)
'(:canceledp nil :epoch 1654902600)))
(it "Canceled"
(expect "eca77dea-4a40-4697-a69d-d1ec798fe9ba" :id-to-be-action
nil nil nil :sp-proj '(:proj-complete)
'(:canceledp t :epoch 1654902780))))
(describe "Project Tasks"
(it "Active"
(expect "2db32ed8-0a1f-488c-8e41-dd3549ac8b1b" :id-to-be-action
nil nil nil :sp-task '(:task-active)
'(:todo "NEXT" :sched nil :dead nil)))
(it "Waiting"
(expect "cf58280a-ac7c-4951-a3de-a3f79f92f2b0" :id-to-be-action
nil nil nil :sp-task '(:task-active)
'(:todo "WAIT" :sched nil :dead nil)))
(it "Held"
(expect "4f743d31-2df4-4e32-85de-cedae0cffeb2" :id-to-be-action
nil nil nil :sp-task '(:task-active)
'(:todo "HOLD" :sched nil :dead nil)))
(it "Completed"
(expect "61866e72-7153-44d1-ae0f-af527fe5f9f4" :id-to-be-action
nil nil nil :sp-task '(:task-complete)
'(:canceledp nil :epoch 1654903560)))
(it "Canceled"
(expect "322af50a-f431-4940-8caf-cc5acdf5a555" :id-to-be-action
nil nil nil :sp-task '(:task-complete)
'(:canceledp t :epoch 1654903560)))
(it "Deadlined"
(let ((d (timestamp-to-epoch "<2022-06-12 Sun>")))
(expect "fc1f3dda-a4b7-4b0d-b37c-fa67e112023a" :id-to-be-action
nil nil d :sp-task '(:task-active)
'(:todo "NEXT" :sched nil :dead nil)))))
(describe "Standalone Tasks"
(it "Active"
(expect "cda28b1a-2b7d-48ea-b1df-e006be799c2f" :id-to-be-action
nil nil nil :sp-task '(:task-active)
'(:sched nil :dead nil :todo "TODO"))))
(describe "Iterators"
(it "Active non-empty"
(let ((s0 (partition-timestamp "<2022-06-07 Tue>"))
(s1 (partition-timestamp "<2022-06-14 Tue>"))
(s2 (partition-timestamp "<2022-06-21 Tue>")))
(expect "2711e9b9-f765-415d-930f-b7ff16b3140b" :id-to-be-action
nil nil nil :sp-iter '(:iter-nonempty :nonempty-active)
(list :child-scheds `(,s0 ,s1 ,s2)
:leading-sched-dt (plist-get s2 :datetime)
:dead nil))))
(it "Active non-empty (with project)"
(let ((s0 (partition-timestamp "<2022-06-12 Tue>"))
(s1 (partition-timestamp "<2022-06-14 Tue>")))
(expect "6b33c33b-2ce8-405d-b2bb-917305dfa840" :id-to-be-action
nil nil nil :sp-iter '(:iter-nonempty :nonempty-active)
(list :child-scheds `(,s0 ,s1)
:leading-sched-dt (plist-get s1 :datetime)
:dead nil))))
(it "Active empty"
(expect "15cfb339-358a-49ce-8cb3-9bcfb1c5a126" :id-to-be-action
nil nil nil :sp-iter '(:iter-empty :empty-active) nil))
(it "Complete non-empty"
(expect "f2002c13-5ddd-46ec-9895-67182d89dd19" :id-to-be-action
nil nil nil :sp-iter '(:iter-nonempty :nonempty-complete)
'(:canceledp nil :epoch 1654902780)))
(it "Active empty"
(expect "6ac25533-ba98-4cce-b8a3-9dcf2ada5d77" :id-to-be-action
nil nil nil :sp-iter '(:iter-empty :empty-complete)
'(:canceledp nil :epoch 1654902780))))
(describe "Sub-iterators"
(it "Active task"
(let ((s (partition-timestamp "<2022-06-07 Tue>")))
(expect "b02619f6-b9da-4d78-acdd-409a4c5d747b" :id-to-be-action
nil nil nil :sp-subiter '(:si-task :task-active)
(list :sched s :dead nil))))
(it "Complete task"
(expect "fa290644-ba9a-42ac-a25a-a0cca5704d44" :id-to-be-action
nil nil nil :sp-subiter '(:si-task :task-complete)
'(:canceledp nil :epoch 1654902780)))
(it "Active project"
(let ((s0 (partition-timestamp "<2022-06-12 Sun>"))
(s1 (partition-timestamp "<2022-06-14 Sun>")))
(expect "ed5ff869-2d98-457e-8718-ebb0ca9c1e72" :id-to-be-action
nil nil nil :sp-subiter '(:si-proj :proj-active)
(list :dead nil
:child-scheds `(,s0 ,s1)
:leading-sched-dt (plist-get s1 :datetime)))))))
;; TODO add deadline to this (but in absolute form)
(describe "Quarterly buffer statuses"
(it "Active"
(expect "aa3e549c-b309-40a2-a687-6d9791653a18" :id-to-be-qtp
:active nil '(2022 4 1))))
;; (describe "Weekly buffer statuses"
;; (it "Active (leaf)"
;; (expect "ed1406ad-1231-46de-b026-8067411133dc" :id-to-be-wkp
;; :active :leaf '(2022 6 6))))
(describe "Metadata Tests"
(it "parent tag"
(expect (org-x-dag-id->tags "3de25d74-b90e-4c77-9f7f-8190187e7ed0")
:to-equal '("nice_tag")))
(it "local tag"
(expect (org-x-dag-id->local-tags "e4876e82-c8c8-4ff8-ad23-f78e3904b927")
:to-equal '("random_tag")))))
(provide 'org-x-dag-test)
;;; org-x-dag-test.el ends here

11
runtime_pkgs Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# Print a list of all pacman packages required to run this emacs configuration
this_dir=$(dirname "$0")
emacs -batch \
-l "$this_dir/init.el" \
-f nd/dump-arch-dependencies \
2> /dev/null | \
sed 's/"//'

33
straight-boot.el Normal file
View File

@ -0,0 +1,33 @@
;; disable automatic package updates
(setq straight-check-for-modifications nil)
;; watch for repo modifications if we have python3 and watchexec
;; otherwise just use a save hook
;; (setq straight-check-for-modifications
;; (if (and (executable-find "python3")
;; (executable-find "watchexec"))
;; '(watch-files find-when-checking)
;; '(check-on-save find-when-checking)))
;; add pinned packages to straight
;; (setq straight-profiles
;; '((nil . "default.el")
;; ;; Packages which are pinned to a specific commit.
;; (pinned . "pinned.el")))
;; bootstrap straight
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
;; install use-package itself
(straight-use-package 'use-package)

View File

@ -1,139 +1,136 @@
(("ESS" . "e83ac622fe7e3cbfc848481a9257e5ed5c7b5afb") (("ESS" . "950bf61054bd96d2203ac0457792c0af8dfba721")
("Highlight-Indentation-for-Emacs" . "d88db4248882da2d4316e76ed673b4ac1fa99ce3") ("Highlight-Indentation-for-Emacs" . "d88db4248882da2d4316e76ed673b4ac1fa99ce3")
("ace-window" . "0577c426a9833ab107bab46c60d1885c611b2fb9") ("ace-window" . "77115afc1b0b9f633084cf7479c767988106c196")
("anaconda-mode" . "cbea0fb3182321d34ff93981c5a59f8dd72d82a5") ("anaconda-mode" . "f900bd7656a03aa24ef3295251f266736f7756eb")
("annalist.el" . "134fa3f0fb91a636a1c005c483516d4b64905a6d") ("annalist.el" . "e1ef5dad75fa502d761f70d9ddf1aeb1c423f41d")
("auctex" . "53b82804c9dd9dbea306876f3be84ebacbeb7e74") ("auctex" . "ca8c9077c4c889cc11d150af9f0d9bd5914d702e")
("auth-source-xoauth2" . "d3890eaa3a46dc89758ec6b789949e70ae782896") ("auth-source-xoauth2" . "5d1adfa649bb5a9df20a2fa89f235a55a64b52e4")
("avy" . "ba5f035be33693d1a136a5cbeedb24327f551a92") ("avy" . "be612110cb116a38b8603df367942e2bb3d9bdbe")
("beacon" . "bde78180c678b233c94321394f46a81dc6dce1da") ("bats-mode" . "fa88930b1baba101ae6474f289a239a236a7d19f")
("biblio.el" . "517ec18f00f91b61481214b178f7ae0b8fbc499b") ("beacon" . "85261a928ae0ec3b41e639f05291ffd6bf7c231c")
("blacken" . "764912ada13c3bf57e770fcd978c81a1ce26666a") ("biblio.el" . "ee52f6cda82ea6fbc3b400e7b12132595cc0374c")
("blacken" . "3c6eb86ad871ca14fcfd4e5c0e7b285afa1f1f71")
("c-eldoc" . "f4ede1f37f6de583376669735326367d84a0a917") ("c-eldoc" . "f4ede1f37f6de583376669735326367d84a0a917")
("cider" . "b2dd4a7d9def83d420424fcaf69fd791198a264b") ("citeproc-el" . "54184baaff555b5c7993d566d75dd04ed485b5c0")
("citeproc-el" . "ba49516265fa24b138346c4918d39d19b4de8a62") ("clang-format" . "9f4358fcc8b04018cc1ed46fcc96fc7bfa361a47")
("clang-format" . "e48ff8ae18dc7ab6118c1f6752deb48cb1fc83ac") ("company-anaconda" . "169252fca79a79da41ef22f2ec0eab0cf1313966")
("clojure-mode" . "b6f41d74904daa9312648f3a7bea7a72fd8e140b")
("company-anaconda" . "da1566db41a68809ef7f91ebf2de28118067c89b")
("company-auctex" . "9400a2ec7459dde8cbf1a5d50dfee4e300ed7e18") ("company-auctex" . "9400a2ec7459dde8cbf1a5d50dfee4e300ed7e18")
("company-c-headers" . "9d384571b1190e99d0a789e5296176d69a3d0771") ("company-c-headers" . "9d384571b1190e99d0a789e5296176d69a3d0771")
("company-irony" . "b44711dfce445610c1ffaec4951c6ff3882b216a") ("company-irony" . "b44711dfce445610c1ffaec4951c6ff3882b216a")
("company-math" . "45778f5731c97a21a83e3b965cbde42018709afd") ("company-math" . "3eb006874e309ff4076d947fcbd61bb6806aa508")
("company-mode" . "d5145006b948f93e673f439a766da01f636d39fc") ("company-mode" . "1321e285a54dfe43cae71f52e58bff4f0c8c161d")
("compat" . "81378ce2549e6c6df5141d459036438cb98b9ad3") ("compat" . "99d74e635b76c3fa0b8403391e9d2efbd29f9901")
("conda.el" . "7a34e06931515d46f9e22154762e06e66cfbc81c") ("conda.el" . "ce748a53f9c7d7a7d112632d32c848d6e5482e18")
("csv-mode" . "53beddc207864b0c3f81da85b59245dff8eea5ce") ("csv-mode" . "6979fc18ebe133cfe2fca02efda9a9f0cd13428a")
("dash.el" . "76606f90774c5349f7adac20c33e6d37a1939a1f") ("dash.el" . "1de9dcb83eacfb162b6d9a118a4770b1281bcd84")
("delight" . "70cb8cec9e5eb2c24364e065d85c2ea8f14a587c") ("delight" . "15acb0f0ba400c470e378f9984b315f9e02c1122")
("dired-du" . "4ce114a0195b852022a81b05f0c8e0cbbc1ed013") ("dhall-mode" . "87ab69fe765d87b3bb1604a306a8c44d6887681d")
("dired-hacks" . "7c0ef09d57a80068a11edc74c3568e5ead5cc15a") ("dired-du" . "c16cad8c40a022a03dee1956a15ff44d1e42dc07")
("dockerfile-mode" . "b63a3d12b7dea0cb9efc7f78d7ad5672ceab2a3f") ("dired-hacks" . "e9e408e8571aee5574ca0a431ef15cac5a3585d4")
("ebib" . "0e243a78f435038dda31953c5b48cbddf2a89e27") ("dockerfile-mode" . "39a012a27fcf6fb629c447d13b6974baf906714c")
("el-get" . "a620c91fe7d6d482c0e7538df75e10af0af1bb16") ("ebib" . "5ea510a1e4ab17a442352d0212777da5f78d4be2")
("elpy" . "1746e7009000b7635c0ea6f1559018143aa61642") ("el-get" . "c0713e8d8e8ad987fe1283d76b9c637a10f048ef")
("emacs-async" . "c78bab7506a70a735d2c3deab13fa87bf44a83d3") ("elpy" . "c40bab559fe77dcef6b90d5502eba1ecd566e86d")
("emacs-buttercup" . "ceedad5efa797e860dbb356bc2c3028a4e0321ec") ("emacs-async" . "e1d46f97a56e0c57206bd1ea31d04311097a8cbb")
("emacs-calfw" . "03abce97620a4a7f7ec5f911e669da9031ab9088") ("emacs-buttercup" . "dfbef2177209e3a045e981b7d2956ec46ce3b25b")
("emacs-dashboard" . "1e691b346b9220b73337fd4962bbe6ef775ad9e7") ("emacs-dashboard" . "187699e2d80f6a3b0ec7b2fb2e1d7ece2712208f")
("emacs-format-all-the-code" . "828280eaf3b46112e17746a7d03235570a633425") ("emacs-format-all-the-code" . "f8feea08fef7ed542b8e676e90445d57ebd2c458")
("emacs-htmlize" . "dd27bc3f26efd728f2b1f01f9e4ac4f61f2ffbf9") ("emacs-htmlize" . "ed5e5b05fd260e8f161a488d56f10e7f6e01fb75")
("emacs-language-id" . "5325af36d9cd726de47a698ac159fce59f3fd6d9") ("emacs-language-id" . "44452e4f7962aca41cc2539fce1d27799d6e656c")
("emacs-refactor" . "cac1b52932926f56d7f6d2923732d20bbd20670d") ("emacs-refactor" . "cac1b52932926f56d7f6d2923732d20bbd20670d")
("emacs-web-server" . "22ce66ea43e0eadb9ec1d691a35d9695fc29cee6") ("emacs-reformatter" . "0d29a04d69d47599e2cb7f1a8f8e897a2b592921")
("emacs-which-key" . "1ab1d0cc88843c9a614ed3226c5a1070e32e4823") ("emacs-request" . "01e338c335c07e4407239619e57361944a82cb8a")
("emacsmirror-mirror" . "f5e5fc8fb9c6dd5d9319819ab0161a9f78c2e657") ("emacs-web-server" . "3982c55e9061475038a3ccd61aecb2de3d407cec")
("epl" . "78ab7a85c08222cd15582a298a364774e3282ce6") ("emacs-which-key" . "38d4308d1143b61e4004b6e7a940686784e51500")
("evil" . "157af04d2cf466e301e82b0e667c5e7203fd96a2") ("emacsmirror-mirror" . "8cbbdaa750c897d05ee71980834699a7d7c2d208")
("evil" . "5db0bdc7dcd9300b983526d37cbe480f35e36211")
("evil-ReplaceWithRegister" . "91cc7bf21a94703c441cc9212214075b226b7f67") ("evil-ReplaceWithRegister" . "91cc7bf21a94703c441cc9212214075b226b7f67")
("evil-collection" . "e1bbf13194e06c435cd3328b2b431c9c46fbbf40") ("evil-collection" . "772571fc6762b6cd1d35cc869e266de9a5c6022b")
("evil-commentary" . "2dab6ac34d1617971768ad219d73af48f7473fec") ("evil-commentary" . "c5945f28ce47644c828aac1f5f6ec335478d17fb")
("evil-org-mode" . "0d10ff7bb9a3a93d25cd91018b17f0a052b335f3") ("evil-org-mode" . "b1f309726b1326e1a103742524ec331789f2bf94")
("evil-surround" . "c9e1449bf3f740b5e9b99e7820df4eca7fc7cf02") ("evil-surround" . "da05c60b0621cf33161bb4335153f75ff5c29d91")
("f.el" . "e0dc429f9c20322c7af735a828fe2404bb416715") ("f.el" . "1e7020dc0d4c52d3da9bd610d431cab13aa02d8c")
("fill-column-indicator" . "c35f9de072c241699b57bcb46da84bed5af29cfe") ("fill-column-indicator" . "c35f9de072c241699b57bcb46da84bed5af29cfe")
("flycheck" . "66a973afca1d03b8284baaa7590eb2b8615a1e6a") ("flycheck" . "7a6398ea3538a898eba0276f0f89b2f878325a89")
("flycheck-clang-analyzer" . "646d9f3a80046ab231a07526778695d5decad92d") ("flycheck-clang-analyzer" . "646d9f3a80046ab231a07526778695d5decad92d")
("flycheck-package" . "615c1ed8c6fb7c73abec6aaa73d3fef498d231bc") ("flycheck-haskell" . "b7c4861aa754220b7d0cfc05aa0895bb35665683")
("flyspell-correct" . "7d7b6b01188bd28e20a13736ac9f36c3367bd16e") ("flycheck-package" . "75efa098cf17dc14c363e2ca9b68afdac7766b5b")
("gnu-elpa-mirror" . "808923d95777d378ca340b8020dd571e6a62460a") ("flyspell-correct" . "1e7a5a56362dd875dddf848b9a9e25d1395b9d37")
("goto-chg" . "278cd3e6d5107693aa2bb33189ca503f22f227d0") ("gnu-elpa-mirror" . "3d0759ef4792b6461f2979a4e70e1c819df7283a")
("graphviz-dot-mode" . "6e96a89762760935a7dff6b18393396f6498f976") ("goto-chg" . "72f556524b88e9d30dc7fc5b0dc32078c166fda7")
("haskell-mode" . "5a9f8072c7b9168f0a8409adf9d62a3e4ad4ea3d") ("graphviz-dot-mode" . "8ff793b13707cb511875f56e167ff7f980a31136")
("helm-bibtex" . "ce8c17690ddad73d01531084b282f221f8eb6669") ("haskell-mode" . "727f72a2a4b8e4fd0a7b62129668baea55a2c3e0")
("ht.el" . "c4c1be487d6ecb353d07881526db05d7fc90ea87") ("helm-bibtex" . "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c")
("hydra" . "9e9e00cb240ea1903ffd36a54956b3902c379d29") ("ht.el" . "1c49aad1c820c86f7ee35bf9fff8429502f60fef")
("hydra" . "317e1de33086637579a7aeb60f77ed0405bf359b")
("iedit" . "27c61866b1b9b8d77629ac702e5f48e67dfe0d3b") ("iedit" . "27c61866b1b9b8d77629ac702e5f48e67dfe0d3b")
("impatient-mode" . "479a2412596ff1dbdddeb7bdbba45482ce5b230c") ("impatient-mode" . "a4e4e12852840996b027cb8e9fb2b809c37a0ee3")
("inf-ruby" . "dbf4386bac12f1733257db6105e3f1fca05ffb79") ("inf-ruby" . "b234625c85a48cc71e7045f5d48f079f410d576a")
("inheritenv" . "c2c879acf89682559b157fb069e1da008f4912ea") ("inheritenv" . "bac62ca6324828623cf8ce5a3d6aee0fcb65d620")
("irony-mode" . "870d1576fb279bb93f776a71e65f45283c423a9e") ("irony-mode" . "40e0ce19eb850bdf1f77225f11713cc816250d95")
("jinja2-mode" . "03e5430a7efe1d163a16beaf3c82c5fd2c2caee1") ("jinja2-mode" . "03e5430a7efe1d163a16beaf3c82c5fd2c2caee1")
("js-comint" . "7920252e88eb610add7c9760f7016bb9b884307a") ("js-comint" . "ef2ccccad5740f3d8b5295f52a35df4f62471480")
("json-mode" . "eedb4560034f795a7950fa07016bd4347c368873") ("json-mode" . "77125b01c0ddce537085201098bea9b4b8ba6be3")
("json-snatcher" . "b28d1c0670636da6db508d03872d96ffddbc10f2") ("json-snatcher" . "b28d1c0670636da6db508d03872d96ffddbc10f2")
("let-alist" . "592553db5929b54db40af0df90c5add0aaca045b") ("let-alist" . "4e05e158612f360f6080b1349d3962b1c8fee902")
("lispy" . "df1b7e614fb0f73646755343e8892ddda310f427") ("lispy" . "fe44efd21573868638ca86fc8313241148fabbe3")
("list-utils" . "ca9654cd1418e874c876c6b3b7d4cd8339bfde77") ("list-utils" . "f02dcef36330871855346f9eab97eef58d323d9a")
("lua-mode" . "5a9bee8d5fc978dc64fcb677167417010321ba65") ("lua-mode" . "d074e4134b1beae9ed4c9b512af741ca0d852ba3")
("magit" . "4b8eab3af130c47421482c1d28c1cbcb033106fc") ("magit" . "61f6a778ab5b0ca97069778a5955ae527996cd0f")
("map" . "9f46b9c966505874d68d9036827a4f63b55ab846") ("markdown-mode" . "8a7773f87733866a961ea4c518a4a2f283f21970")
("markdown-mode" . "4477f381de0068a04b55e198c32614793f67b38a") ("math-symbol-lists" . "ac3eb053d3b576fcdd192b0ac6ad5090ea3a7079")
("math-symbol-lists" . "590d9f09f8ad9aab747b97f077396a2035dcf50f") ("melpa" . "a21e230a1e8034076b2a271809ccf613476eeea7")
("melpa" . "6ade7599f12a93517f24f5871091fa74c6c2e387") ("nix-mode" . "719feb7868fb567ecfe5578f6119892c771ac5e5")
("no-littering" . "a5aa3faada054f96b70b32ba9d9447f7a4cf403c") ("no-littering" . "8b07314d2f0594ff22bf798d9a5f5bf44b4dd4cd")
("nongnu-elpa" . "a9a649210a8d8b9295b5a1d0c7b60a77db03c14c")
("org-bullets" . "767f55feb58b840a5a04eabfc3fbbf0d257c4792") ("org-bullets" . "767f55feb58b840a5a04eabfc3fbbf0d257c4792")
("org-ml" . "3974435bbf72722801f7ed78855381d77a773162") ("org-ml" . "f57336a9126a168ad32ccce017c072474555395a")
("org-ref" . "2d91eba9274a79f908723a4a215e0f0b5c04ed01") ("org-ref" . "fd178abf12a85f8e12005d1df683564bdc534124")
("org-sql" . "71b6e01ff94be4c68cfeb17a34518bf1f118cf95") ("org-sql" . "43376abf46b897a9a862cfcc1c087f4b8688634c")
("org-super-agenda" . "3108bc3f725818f0e868520d2c243abe9acbef4e") ("org-super-agenda" . "05a710065af5ee4b3982f9619f864f7af12ca1d3")
("origami.el" . "e558710a975e8511b9386edc81cd6bdd0a5bda74") ("origami.el" . "e558710a975e8511b9386edc81cd6bdd0a5bda74")
("outline-magic" . "2a5f07417b696cf7541d435c43bafcc64817636b") ("outline-magic" . "2a5f07417b696cf7541d435c43bafcc64817636b")
("ox-pandoc" . "0a35d0fbfa56bdd9ec5ba5bac2fe002b61c05c52") ("ox-pandoc" . "34e6ea97b586e20529d07158a73af3cf33cdd1d5")
("package-lint" . "80a9d9815ab2919c992ad29ae4846443dec43a35") ("package-lint" . "972dd8403ac8d2d43f298ef89a6b118e49c7355f")
("paredit" . "8330a41e8188fe18d3fa805bb9aa529f015318e8") ("paredit" . "037b9b8acbca75151f133b6c0f7f3ff97d9042e5")
("parsebib" . "dd4c5540fa6c2cd990cba324741d7abbc8ed2f23") ("parsebib" . "ace9df707108b17759c004c7387655277122d4c1")
("parseclj" . "1ce54fa2eb7a5d99d34c07d271e18eaabd0489da") ("password-store" . "b5e965a838bb68c1227caa2cdd874ba496f10149")
("parseedn" . "a67204eeaa32ca8f11f6aeecc2a88349f196add6") ("pcre2el" . "b4d846d80dddb313042131cf2b8fbf647567e000")
("password-store" . "c4d8a1d815e79ddd89a85d3e36a41d29f0475771") ("pdf-tools" . "30b50544e55b8dbf683c2d932d5c33ac73323a16")
("pcre2el" . "0b5b2a2c173aab3fd14aac6cf5e90ad3bf58fa7d") ("php-mode" . "59814bd80c59894022bc5950fb3bdf02420e8a89")
("pdf-tools" . "f9ccdf99e560bae70d3a13325cec9dc0e3cc45b0") ("pkgbuild-mode" . "8ef396d8fa9187b65c065a6bc2ca15dfaf3255df")
("php-mode" . "4503672471b8fdaaea6c454344817a119c87fcc6") ("poly-R" . "8024e852cfca642dea2045a41b2033baa2f1f9a5")
("pkg-info" . "76ba7415480687d05a4353b27fea2ae02b8d9d61") ("poly-markdown" . "98695eb7ca4ca11dcec71a1cab64903bbf79b4d3")
("pkgbuild-mode" . "8faee70e4640bd6ec1857651ec64e139e4dc2833")
("poly-R" . "e4a39caaf48e1c2e5afab3865644267b10610537")
("poly-markdown" . "d4ca396ec4a7d674ef0d671a6896f929ce5b504c")
("poly-noweb" . "3b0cd36ca9a707e8a09337a3468fa85d81fc461c") ("poly-noweb" . "3b0cd36ca9a707e8a09337a3468fa85d81fc461c")
("polymode" . "2094c92403fe395dfb2b8b2521da1012a966e9ab") ("polymode" . "ca060e081a1f849a880732670dc15370ac987b89")
("popup-el" . "114d646f0f4dd49de19dfedd78630018f71470e5") ("popup-el" . "c83d6e5f5fa693e08a542ea9ad7c06eced652de9")
("powerline" . "566c77844f053cb39fa7acdfbc143a855450f0b5") ("powerline" . "c35c35bdf5ce2d992882c1f06f0f078058870d4a")
("projectile" . "e60883ff370c1545499b97cf56479de1a58c5b3b") ("projectile" . "01fb6a5ef023bcfc52b209586dcb4fd13db00218")
("pyenv-mode" . "b818901b8eac0e260ced66a6a5acabdbf6f5ba99") ("pythonic" . "c1e5643e044f1faaf6ecfadc719b981c048aeb79")
("pythonic" . "fe75bc17baae314bf8f5e0b12aad3fccfc6c5397")
("pyvenv" . "31ea715f2164dd611e7fc77b26390ef3ca93509b") ("pyvenv" . "31ea715f2164dd611e7fc77b26390ef3ca93509b")
("queue" . "130c2d656cd5d7376552272fab9e50a7c37d0c4a") ("queue" . "8df1334d54d4735d2f821790422a850dfaaa08ef")
("rainbow-delimiters" . "a32b39bdfe6c61c322c37226d66e1b6d4f107ed0") ("rainbow-delimiters" . "f40ece58df8b2f0fb6c8576b527755a552a5e763")
("rainbow-mode" . "55a8c15782197cd9db8950d2f5ed1b9caca08dae") ("rainbow-mode" . "2e6b18609c2fdd1a2dc513937a64d276fd6cf24c")
("robe" . "11207bd549a5a78e3a4d70265c3715990dcdab71") ("robe" . "6bc8a07fc483407971de0966d367a11006b3ab80")
("ruby-test-mode" . "d66db4aca6e6a246f65f7195ecfbc7581d35fb7a") ("ruby-test-mode" . "d66db4aca6e6a246f65f7195ecfbc7581d35fb7a")
("rvm.el" . "c1f2642434b0f68d9baa0687127079ecd884ba12") ("rvm.el" . "e1e83b5466c132c066142ac63729ba833c530c83")
("s.el" . "08661efb075d1c6b4fa812184c1e5e90c08795a9") ("s.el" . "dda84d38fffdaf0c9b12837b504b402af910d01d")
("sesman" . "e0f555f963c9f02f8e4a50e06fc353eb4c15ee77") ("seq" . "da86da9bf111f68fb81efd466d76d53af5aebc00")
("snakemake-mode" . "0dfeaff6079558c39081c2c078c41369da01903b") ("snakemake-mode" . "4ad41da69e4b95b38a3d3273874c44caab20cc56")
("spaceline" . "9a81afa52738544ad5e8b71308a37422ca7e25ba") ("spaceline" . "086420d16e526c79b67fc1edec4c2ae1e699f372")
("spacemacs-theme" . "bd376f705d6eb7afd9a1dfa0c1bd407e869d1e9f") ("spacemacs-theme" . "d02edec79404e807445b62d0d2fc1a6fbcc10c71")
("spinner" . "34905eae12a236753fa88abc831eff1e41e8576e") ("straight.el" . "88e574ae75344e39b436f863ef0344135c7b6517")
("straight.el" . "af5437f2afd00936c883124d6d3098721c2d306c") ("string-inflection" . "617df25e91351feffe6aff4d9e4724733449d608")
("string-inflection" . "fd7926ac17293e9124b31f706a4e8f38f6a9b855") ("sudo-edit" . "74eb1e6986461baed9a9269566ff838530b4379b")
("sudo-edit" . "23b78a39053088839f281bc0c3134203d7e04e50") ("swiper" . "2a25a6fb5b081cb141c5eccac8ee58ab1feeb747")
("swiper" . "f8d80a4055514f92d94f128f5fcb1cda79e5cd22") ("tablist" . "fcd37147121fabdf003a70279cf86fbe08cfac6f")
("systemd-mode" . "b6ae63a236605b1c5e1069f7d3afe06ae32a7bae") ("toc-org" . "6d3ae0fc47ce79b1ea06cabe21a3c596395409cd")
("tablist" . "faab7a035ef2258cc4ea2182f67e3aedab7e2af9") ("transient" . "3d3f8711d4f6a6ff7f53bc22e465ec82587c62ed")
("toc-org" . "bf2e4b358efbd860ecafe6e74776de0885d9d100") ("ts.el" . "552936017cfdec89f7fc20c254ae6b37c3f22c5b")
("transient" . "2e4426fe8161893382f09b3f4635e152ee02488e") ("use-package" . "a6e856418d2ebd053b34e0ab2fda328abeba731c")
("ts.el" . "3fee71ceefac71ba55eb34829d7e94bb3df37cee") ("with-editor" . "8c550d9e799a0baedb2164471e7ed19fc15d9196")
("use-package" . "a7422fb8ab1baee19adb2717b5b47b9c3812a84c") ("xterm-color" . "2ad407c651e90fff2ea85d17bf074cee2c022912")
("with-editor" . "4ab8c6148bb2698ff793d4a8acdbd8d0d642e133") ("yaml-mode" . "7b5ce294fb15c2c8926fa476d7218aa415550a2a")
("yaml-mode" . "535273d5a1eb76999d20afbcf4d9f056d8ffd2da") ("yasnippet" . "eb5ba2664c3a68ae4a53bb38b85418dd131b208f")
("yasnippet" . "5cbdbf0d2015540c59ed8ee0fcf4788effdf75b6")
("zoutline" . "32857c6c4b9b0bcbed14d825a10b91a98d5fed0a")) ("zoutline" . "32857c6c4b9b0bcbed14d825a10b91a98d5fed0a"))
:beta :gamma