summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2024-04-08 17:16:29 -0500
committerCraig Jennings <c@cjennings.net>2024-04-08 17:16:29 -0500
commita55a5248bd2dae5f849476d0f7b5dcd8d91cf929 (patch)
tree834a7b012f6823b53ee2f516384b7bc4c4ec819b
parent754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (diff)
fit and finish work
- gptel: added gptel-send-region with global keybinding - projectile: made project-switch-actions more efficient with regexp - prog-go: removed disabled code - mu4e: capture template captures region if selected - system utils: merged bury alive with other killing buffer code - org-capture: renamed *website-clipper to org-webpage-clipper - rg: auto switch to ripgrep-results window when ripgrep search completes - dashboard: remove dashboard banner custom face General - moved abbrev_defs to assets - removed gitmodules file - updated packages - fixed docstring and formatting throughout Custom-Functions - move cj/merge-list-to-list to custom-functions - add remove leading trailing whitespace function - corrected arrayify prompt Font-Config - added font point sizes in fontaine menu - make default font point size 11 Python - adding back python poetry support - added cj/python-setup method - merge python and python-mode configurations (they are the same built-in package) Show-Kill-Ring - show-kill-ring displays in another read-only buffer - show-kill-ring exits with q Elfeed - moved elfeed-feeds.org to assets - removed Wired from elfeed feeds - moved ElfeedDB to user-emacs-directory/.elfeed-db - moved elfeed-dashboard.org to assets
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules0
-rw-r--r--TODO.org120
-rw-r--r--assets/abbrev_defs (renamed from abbrev_defs)5
-rw-r--r--assets/elfeed-dashboard.org (renamed from elfeed-dashboard.org)0
-rw-r--r--assets/elfeed-feeds.org5
-rw-r--r--localrepo/a-20210929.1510.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/aio-20200610.1904.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/all-the-icons-20240108.559.tarbin204800 -> 204800 bytes
-rw-r--r--localrepo/all-the-icons-ivy-20190508.1803.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/archive-contents5
-rw-r--r--localrepo/async-1.9.8.tarbin102400 -> 102400 bytes
-rw-r--r--localrepo/blacken-20231129.654.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/calibredb-20240331.409.tarbin235520 -> 235520 bytes
-rw-r--r--localrepo/change-inner-20231203.1021.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/chess-2.0.5.tarbin4710400 -> 4710400 bytes
-rw-r--r--localrepo/company-0.10.2.tarbin2713600 -> 2713600 bytes
-rw-r--r--localrepo/compat-29.1.4.5.tarbin348160 -> 0 bytes
-rw-r--r--localrepo/counsel-0.14.2.tarbin286720 -> 286720 bytes
-rw-r--r--localrepo/css-eldoc-20220415.1629.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/dashboard-20240327.29.tarbin174080 -> 174080 bytes
-rw-r--r--localrepo/devdocs-0.6.1.tarbin40960 -> 40960 bytes
-rw-r--r--localrepo/dired-hacks-utils-20230512.1107.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/dirvish-20230519.1500.tarbin276480 -> 276480 bytes
-rw-r--r--localrepo/easy-hugo-20240129.1534.tarbin112640 -> 112640 bytes
-rw-r--r--localrepo/ef-themes-1.6.1.tarbin819200 -> 819200 bytes
-rw-r--r--localrepo/elfeed-20240331.1348.tarbin204800 -> 204800 bytes
-rw-r--r--localrepo/elfeed-dashboard-20210727.603.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/emacsql-20240124.1601.tarbin9267200 -> 9267200 bytes
-rw-r--r--localrepo/emojify-20210108.1111.tarbin921600 -> 921600 bytes
-rw-r--r--localrepo/eradio-20210327.1000.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/erc-image-20210604.753.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/esxml-20230308.2254.tarbin51200 -> 51200 bytes
-rw-r--r--localrepo/exec-path-from-shell-2.1.tarbin61440 -> 61440 bytes
-rw-r--r--localrepo/expand-region-1.0.0.tarbin266240 -> 266240 bytes
-rw-r--r--localrepo/f-20240308.906.tarbin51200 -> 51200 bytes
-rw-r--r--localrepo/feebleline-20190822.1401.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/flycheck-34.1.tarbin655360 -> 655360 bytes
-rw-r--r--localrepo/flycheck-package-20210509.2325.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/flycheck-projectile-20201031.1952.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/fontaine-1.0.0.tarbin184320 -> 184320 bytes
-rw-r--r--localrepo/forge-20240405.1509.tarbin409600 -> 409600 bytes
-rw-r--r--localrepo/free-keys-1.0.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/ghub-20240311.1716.tarbin163840 -> 163840 bytes
-rw-r--r--localrepo/github-dark-vscode-theme-20231011.2034.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/go-mode-1.6.0.tarbin225280 -> 225280 bytes
-rw-r--r--localrepo/gptel-20240404.813.tarbin174080 -> 174080 bytes
-rw-r--r--localrepo/graphql-0.1.2.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/helpful-20231028.516.tarbin122880 -> 122880 bytes
-rw-r--r--localrepo/hl-todo-20240329.1503.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/htmlize-1.56.tarbin92160 -> 92160 bytes
-rw-r--r--localrepo/hydra-0.15.0.tarbin102400 -> 102400 bytes
-rw-r--r--localrepo/impatient-mode-20230511.1746.tarbin245760 -> 245760 bytes
-rw-r--r--localrepo/iter2-20221104.1938.tarbin61440 -> 61440 bytes
-rw-r--r--localrepo/ivy-0.14.2.tarbin583680 -> 583680 bytes
-rw-r--r--localrepo/ivy-rich-20230425.1422.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/js2-mode-20231224.tarbin634880 -> 634880 bytes
-rw-r--r--localrepo/kv-20140108.1534.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/ledger-mode-20240326.2002.tarbin327680 -> 327680 bytes
-rw-r--r--localrepo/ligature-20220808.1225.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/lsp-mode-20240406.356.tarbin1484800 -> 1484800 bytes
-rw-r--r--localrepo/lsp-ui-20240330.2227.tarbin163840 -> 163840 bytes
-rw-r--r--localrepo/lv-0.15.0.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/madhat2r-theme-20170203.30.tarbin92160 -> 92160 bytes
-rw-r--r--localrepo/magit-20240404.1901.tarbin1863680 -> 1863680 bytes
-rw-r--r--localrepo/magit-section-20240311.1407.tarbin122880 -> 122880 bytes
-rw-r--r--localrepo/malyon-20161208.2125.tarbin133120 -> 133120 bytes
-rw-r--r--localrepo/marginalia-1.6.tarbin112640 -> 112640 bytes
-rw-r--r--localrepo/markdown-mode-2.6.tarbin686080 -> 686080 bytes
-rw-r--r--localrepo/mood-line-20231210.1309.tarbin61440 -> 61440 bytes
-rw-r--r--localrepo/nerd-icons-20240319.833.tarbin512000 -> 512000 bytes
-rw-r--r--localrepo/nerd-icons-ibuffer-20230417.1549.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/nov-20230715.1434.tarbin51200 -> 51200 bytes
-rw-r--r--localrepo/olivetti-20231104.538.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/org-contacts-1.1.tarbin71680 -> 71680 bytes
-rw-r--r--localrepo/org-drill-2.7.0.tarbin317440 -> 317440 bytes
-rw-r--r--localrepo/org-roam-20240114.1941.tarbin368640 -> 368640 bytes
-rw-r--r--localrepo/org-super-agenda-20240301.1602.tarbin102400 -> 102400 bytes
-rw-r--r--localrepo/org-superstar-1.5.1.tarbin102400 -> 102400 bytes
-rw-r--r--localrepo/ox-hugo-20240305.1923.tarbin378880 -> 378880 bytes
-rw-r--r--localrepo/package-build-20240306.2234.tarbin102400 -> 102400 bytes
-rw-r--r--localrepo/package-lint-0.23.tarbin1218560 -> 1218560 bytes
-rw-r--r--localrepo/pdf-tools-1.1.0.tarbin6400000 -> 6400000 bytes
-rw-r--r--localrepo/pdf-view-restore-20190904.1708.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/persist-0.6.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/poetry-20240329.1103.tarbin0 -> 40960 bytes
-rw-r--r--localrepo/popup-0.5.9.tarbin153600 -> 153600 bytes
-rw-r--r--localrepo/projectile-2.8.0.tarbin348160 -> 348160 bytes
-rw-r--r--localrepo/promise-20210307.727.tarbin71680 -> 71680 bytes
-rw-r--r--localrepo/pyvenv-20211014.707.tarbin0 -> 30720 bytes
-rw-r--r--localrepo/racket-mode-1.0.20240319.160226.tarbin1269760 -> 0 bytes
-rw-r--r--localrepo/rainbow-mode-1.0.6.tarbin51200 -> 51200 bytes
-rw-r--r--localrepo/request-0.3.3.tarbin92160 -> 92160 bytes
-rw-r--r--localrepo/ripgrep-20220520.1410.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/s-20220902.1511.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/sicp-20200512.1137.tarbin1505280 -> 0 bytes
-rw-r--r--localrepo/simple-httpd-20230821.1458.tarbin40960 -> 40960 bytes
-rw-r--r--localrepo/spinner-1.7.4.tarbin1976320 -> 1976320 bytes
-rw-r--r--localrepo/sudo-edit-20220801.1317.tarbin20480 -> 20480 bytes
-rw-r--r--localrepo/swiper-0.14.2.tarbin71680 -> 71680 bytes
-rw-r--r--localrepo/tablist-1.0.tarbin133120 -> 133120 bytes
-rw-r--r--localrepo/telega-20240322.901.tarbin5632000 -> 5632000 bytes
-rw-r--r--localrepo/tide-20230620.1444.tarbin13025280 -> 13025280 bytes
-rw-r--r--localrepo/tomelr-0.4.3.tarbin71680 -> 71680 bytes
-rw-r--r--localrepo/toml-mode-20161107.1800.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/transient-20240405.1443.tarbin378880 -> 378880 bytes
-rw-r--r--localrepo/tree-sitter-20220212.1632.tarbin71680 -> 71680 bytes
-rw-r--r--localrepo/treesit-auto-20240401.1240.tarbin30720 -> 30720 bytes
-rw-r--r--localrepo/tsc-20220212.1632.tarbin133120 -> 133120 bytes
-rw-r--r--localrepo/visual-fill-column-2.6.2.tarbin235520 -> 235520 bytes
-rw-r--r--localrepo/vscode-icon-20230330.2206.tarbin5263360 -> 5263360 bytes
-rw-r--r--localrepo/vterm-20240325.1551.tarbin522240 -> 634880 bytes
-rw-r--r--localrepo/web-mode-17.3.19.tarbin593920 -> 593920 bytes
-rw-r--r--localrepo/which-key-3.6.0.tarbin645120 -> 645120 bytes
-rw-r--r--localrepo/wiki-summary-20181010.1824.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/windsize-20181029.2257.tarbin10240 -> 10240 bytes
-rw-r--r--localrepo/with-editor-20240101.2226.tarbin71680 -> 71680 bytes
-rw-r--r--localrepo/yaml-20231211.1501.tarbin112640 -> 112640 bytes
-rw-r--r--localrepo/yaml-mode-0.0.16.tarbin40960 -> 40960 bytes
-rw-r--r--localrepo/yasnippet-0.14.1.tarbin911360 -> 911360 bytes
-rw-r--r--localrepo/ztree-1.0.6.tarbin143360 -> 143360 bytes
-rw-r--r--modules/ai-config.el21
-rw-r--r--modules/config-utilities.el2
-rw-r--r--modules/custom-functions.el67
-rw-r--r--modules/dashboard-config.el5
-rw-r--r--modules/elfeed-config.el31
-rw-r--r--modules/flycheck-config.el18
-rw-r--r--modules/font-config.el14
-rw-r--r--modules/help-utils.el13
-rw-r--r--modules/org-capture-config.el133
-rw-r--r--modules/org-drill-config.el1
-rw-r--r--modules/org-roam-config.el10
-rw-r--r--modules/prog-c.el2
-rw-r--r--modules/prog-comments.el73
-rw-r--r--modules/prog-general.el42
-rw-r--r--modules/prog-go.el52
-rw-r--r--modules/prog-python.el61
-rw-r--r--modules/show-kill-ring.el25
-rw-r--r--modules/system-utils.el72
-rw-r--r--modules/test-code.el20
-rw-r--r--modules/text-config.el2
-rw-r--r--modules/ui-navigation.el25
142 files changed, 423 insertions, 402 deletions
diff --git a/.gitignore b/.gitignore
index 56a98c92..828dc13d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,4 @@ auto-save-list/
/.elpa-mirrors/
/forge-database.sqlite
/.scratch
+/.elfeed-db/
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index e69de29b..00000000
--- a/.gitmodules
+++ /dev/null
diff --git a/TODO.org b/TODO.org
index 15c49a37..0d86d0f2 100644
--- a/TODO.org
+++ b/TODO.org
@@ -156,50 +156,53 @@ This is the result of overriding that function in cj/invincible-buffers in syste
*** DONE [#C] Bookmark-save-flag Replaces Bookmark-set-and-save
CLOSED: [2024-04-03 Wed 15:00]
remove cj/bookmark-set-and-save if setting bookmark-save-flat to 1 saves when adding/modifying a bookmark
-** DOING v0.7 Bug Fixing (ends 2024.04.18) [5/10]
-*** TODO [#C] Ripgrep Should Put Point on Results Buffer
-*** TODO [#A] Remove Security Keys
-**** Remove OpenAPI Key From ai-config.el
-***** 2024-04-07 Sun @ 13:21:22 -0500 Issue in ai-config.el
- ;; BUG: .authinfo.gpg not accessed for this key
-**** Purge History to Remove Historical Issues
-Do this after other secrets are removed
-***** Google OAuth file in assets
-****** 2024-04-07 Sun @ 13:23:51 -0500 This One's in History. Fix by Purging History
-***** OpenAPI Key in help-utils.el
-****** 2024-04-07 Sun @ 13:19:10 -0500 Need to Erase History
-Originally, I thought this was a duplicate use-package declaration.
-Now it appears this is in history. I can simply:
-- force delete the .git file
-- recommit everything
-- force push back to github and git.cjennings.net
-- check the security section again to ensure it's gone.
-***** Google OAuth Client ID and Client Secret in org-agenda-config.el
+** DOING Open v0.7 Fit and Finish (ends 2024.04.18) [0/6]
+*** DOING [#B] Mu4e Doesn't Launch Properly on Fresh Archinstall
+Error was something about the mu server exiting.
+**** DOING Setup Virtualbox Testing
+***** DONE Create ArchBase and ArchSetup Images
+CLOSED: [2024-04-07 Sun 13:48]
+***** DOING Run Archsetup in ArchSetup Image
+***** TODO Run Mu4e Install Found in ~/.emacs.d/scripts/
+***** TODO Snapshot the Image
*** TODO [#A] S-<right> is Undefined Error in Org Mode
(should be org-agenda-todo-nextset)
**** 2024-04-07 Sun @ 11:48:44 -0500 it's simply undefined in org-mode
Looks like I just added it to org-agenda-mode?
*** TODO [#A] Error When Starting org-drill in cj/org-drill-start
let: Symbol’s function definition is void: org-drill
-*** TODO [#B] Kill All Windows Also Kills Invisible Buffers
-*** TODO [#B] Mu4e Doesn't Launch Properly on Fresh Archinstall
-Error was something about the mu server exiting.
-**** TODO Setup Archbase for Virtualbox Testing
-**** TODO Run Archsetup
-**** TODO Run Mu4e Install Found in ~/.emacs.d/scripts/
*** TODO [#C] Dashboard Icons Aren't Correct or Sized Correctly on Fractal
*** TODO [#C] Check if Including Dired Buffers in Autorevert-mode Slows Tramp
-*** DONE [#B] cj/kill-buffers renamed
+*** [#D] Completed v.07 Fit and Finish
+**** DONE [#A] Remove Security Keys
+CLOSED: [2024-04-07 Sun 13:46]
+***** Remove OpenAPI Key From ai-config.el
+****** 2024-04-07 Sun @ 13:21:22 -0500 Issue in ai-config.el
+ ;; BUG: .authinfo.gpg not accessed for this key
+***** Purge History to Remove Historical Issues
+Do this after other secrets are removed
+****** Google OAuth file in assets
+******* 2024-04-07 Sun @ 13:23:51 -0500 This One's in History. Fix by Purging History
+****** OpenAPI Key in help-utils.el
+******* 2024-04-07 Sun @ 13:19:10 -0500 Need to Erase History
+Originally, I thought this was a duplicate use-package declaration.
+Now it appears this is in history. I can simply:
+- force delete the .git file
+- recommit everything
+- force push back to github and git.cjennings.net
+- check the security section again to ensure it's gone.
+****** Google OAuth Client ID and Client Secret in org-agenda-config.el
+**** DONE [#B] cj/kill-buffers renamed
CLOSED: [2024-04-04 Thu 19:17]
-*** DONE [#B] cj/kill-buffers doesn't select current buffer in completing read by default
+**** DONE [#B] cj/kill-buffers doesn't select current buffer in completing read by default
CLOSED: [2024-04-04 Thu 19:17]
-*** DONE [#B] cj/kill-buffers should allow adding to invincible-buffers with C-u prefix
+**** DONE [#B] cj/kill-buffers should allow adding to invincible-buffers with C-u prefix
CLOSED: [2024-04-04 Thu 19:33]
-*** DONE [#B] Mu4e Reply All Should Be Default
+**** DONE [#B] Mu4e Reply All Should Be Default
CLOSED: [2024-04-04 Thu 20:45]
make 'r' reply-all (or wide reply) and 'R' reply
no need to remove 'W' (for wide reply)
-**** 2024-04-04 Thu @ 20:36:56 -0500 Solution Tested to Be Working
+***** 2024-04-04 Thu @ 20:36:56 -0500 Solution Tested to Be Working
Need to adjust 'mu4e-view-mode'. Within that mode:
- the reply method is named "mu4e-compose-reply"
- the reply-all method is named "mu4e-compose-wide-reply"
@@ -212,19 +215,31 @@ There doesn't seem to be anything already mapped to "R", so adding the following
#+end_src
Tested both keys on a mail that had many recipients and it behaved in the way I expected.
-*** DONE [#B] cj/hyphenate-whitespace-in-region should leave point where it started
+**** DONE [#B] cj/hyphenate-whitespace-in-region should leave point where it started
CLOSED: [2024-04-04 Thu 22:07]
-** DOING Complete v0.7 Release Checklist [7/10]
-- [X] No Open Work
-- [X] WIP Code Empty/Disabled
-- [X] Emacs Config Inbox Zero
-- [X] Perf Testing: Sub-Second Launch Time
-- [X] Successful Launch from Git Clone
-- [ ] Successful Launch from Archsetup
-- [X] Merged cleanly into main branch
-- [X] Main Branch Pushed to github and git.cjennings.net
-- [ ] 2 Week Scenario Testing and Bug Fixing ends: Thursday, April 18, 2024
-- [ ] Mark Release as DONE and Create Tag on Repo
+**** DONE [#C] Remove unnecessary .gitmodule file
+CLOSED: [2024-04-07 Sun 14:07]
+**** DONE [#C] move files in project root to assets
+CLOSED: [2024-04-07 Sun 14:21]
+***** 2024-04-07 Sun @ 14:07:56 -0500 files to move
+abbrev_defs
+elfeed-dashboard
+**** DONE [#B] Kill All Windows Also Kills Invisible Buffers
+CLOSED: [2024-04-08 Mon 16:14]
+**** DONE [#C] Ripgrep Should Finish with Point on Results Buffer
+CLOSED: [2024-04-08 Mon 16:14]
+** DOING Complete v0.7 Release Checklist [8/11]
+*** DOING 2 Week Fit and Finish (ends 2024.04.18)
+*** TODO Clean Launch from Archsetup
+*** TODO Close Release and Create Tag on Repo
+*** DONE No Open Work
+*** DONE WIP Code Empty/Disabled
+*** DONE Emacs Config Inbox Zero
+*** DONE Perf Testing: Sub-Second Launch Time
+*** DONE Security Check for Keys
+*** DONE Clean Launch from Git Clone
+*** DONE Merged Cleanly Into Main Branch
+*** DONE Main Branch Pushed to github and git.cjennings.net
* Emacs Config v0.8
** VERIFY Add Around Word or Region
*** 2024-04-04 Thu @ 22:12:04 -0500 Scenario Testing Verification
@@ -326,19 +341,9 @@ I'm starting from scratch, but here are my (currently simple) requirements
And yes, this means I also need to find and host an online calendar that sync's with an Android app.
** TODO Ledger Workflow
-** TODO Emacs Config v0.8 Bug Fixes
-** TODO Emacs Config v0.8 Release Checklist [0/9]
-- [ ] No Open Work
-- [ ] WIP Code Empty/Disabled
-- [ ] Empty Emacs Config Inbox of Issues
-- [ ] Keep Sub-Second Launch Time
-- [ ] Successful Launch from Git Clone
-- [ ] Merged cleanly into main branch
-- [ ] Main Branch Pushed to github and git.cjennings.net
-- [ ] 2 Weeks of Use and Bug Fixing
-- [ ] Mark Release as DONE and Create Tag on Repo
-
-** TODO Consider the Flyspell Correct Ivy Interface for spelling
+** TODO Miscellaneous Work
+*** TODO Fix Show Kill Ring
+*** TODO Consider the Flyspell Correct Ivy Interface for spelling
#+BEGIN_QUOTE
flyspell-correct-ivy interface
In order to use flyspell-correct-ivy interface you have to install flyspell-correct-ivy package in any preferred way and then add following snippet to relevant part of your init.el file.
@@ -360,9 +365,12 @@ Note that in order to access actions in ivy interface you need to press M-o. Mor
#+END_QUOTE
[[https://github.com/d12frosted/flyspell-correct?tab=readme-ov-file#screenshots][d12frosted/flyspell-correct: Distraction-free words correction with flyspell via selected interface.]]
Captured On: [2024-04-05 Fri 13:49]
-** TODO Consider Actively Developed Awesome Tray Instead of Unsupported Feebleline
+*** TODO Consider Actively Developed Awesome Tray Instead of Unsupported Feebleline
[[https://github.com/manateelazycat/awesome-tray?tab=readme-ov-file][manateelazycat/awesome-tray: Hide mode-line, display necessary information at right of minibuffer.]]
Captured On: [2024-04-06 Sat 11:09]
+** TODO Emacs Config v0.8 Bug Fixes
+** TODO Emacs Config v0.8 Release Checklist
+(add latest release checklist here)
* Emacs Config v0.9
** TODO VC Installs from Github
** TODO Prog Go Workflow
diff --git a/abbrev_defs b/assets/abbrev_defs
index 1423bcc9..922e3871 100644
--- a/abbrev_defs
+++ b/assets/abbrev_defs
@@ -56,12 +56,15 @@
("begnning" "beginning" nil :count 0)
("beleive" "believe" nil :count 0)
("benifit" "benefit" nil :count 0)
+ ("beter" "better" nil :count 0)
("betwene" "between" nil :count 0)
("bnot" "should" nil :count 1)
("bookeepping" "bookkeeping" nil :count 0)
("bouy" "buoy" nil :count 0)
("bouyant" "buoyant" nil :count 0)
("buisness" "business" nil :count 0)
+ ("cafe" "café" nil :count 0)
+ ("cafes" "cafés" nil :count 0)
("calender" "calendar" nil :count 0)
("camoflage" "camouflage" nil :count 0)
("camoflague" "camouflage" nil :count 0)
@@ -124,7 +127,6 @@
("experiance" "experience" nil :count 0)
("extreem" "extreme" nil :count 0)
("facinating" "fascinating" nil :count 0)
- ("fierey" "foreign" nil :count 0)
("fiirst" "profile" nil :count 0)
("finshed" "finished" nil :count 0)
("firey" "fiery" nil :count 0)
@@ -264,6 +266,7 @@
("secretery" "secretary" nil :count 0)
("seperate" "separate" nil :count 0)
("seperately" "separately" nil :count 0)
+ ("sergent" "sergeant" nil :count 0)
("sgould" "should" nil :count 0)
("shoudl" "should" nil :count 1)
("sieze" "seize" nil :count 0)
diff --git a/elfeed-dashboard.org b/assets/elfeed-dashboard.org
index 0d9e90f6..0d9e90f6 100644
--- a/elfeed-dashboard.org
+++ b/assets/elfeed-dashboard.org
diff --git a/assets/elfeed-feeds.org b/assets/elfeed-feeds.org
index e8bc1426..db4cbd66 100644
--- a/assets/elfeed-feeds.org
+++ b/assets/elfeed-feeds.org
@@ -48,11 +48,6 @@
*** [[https://drewdevault.com/blog/index.xml][Drew Devault's Blog]] :tech:
*** [[https://registerspill.thorstenball.com/feed][Thorsten Ball's Register Spill]] :tech:
** Tech News Sites :technews:
-*** Wired :wired:
-**** [[https://www.wired.com/feed/category/ideas/latest/rss][Wired Ideas]]
-**** [[https://www.wired.com/feed/category/backchannel/latest/rss][Wired Backchannel]]
-**** [[https://www.wired.com/feed/category/business/latest/rss][Wired Business]]
-**** [[https://www.wired.com/feed/tag/ai/latest/rss][Wired AI]] :ai:
*** The Register :theregister:
**** [[https://www.theregister.co.uk/headlines.atom][The Register Headlines]]
*** Ars Technica :arstechnica:
diff --git a/localrepo/a-20210929.1510.tar b/localrepo/a-20210929.1510.tar
index 7a217dc5..8d66ed01 100644
--- a/localrepo/a-20210929.1510.tar
+++ b/localrepo/a-20210929.1510.tar
Binary files differ
diff --git a/localrepo/aio-20200610.1904.tar b/localrepo/aio-20200610.1904.tar
index 808b935c..aafa76bb 100644
--- a/localrepo/aio-20200610.1904.tar
+++ b/localrepo/aio-20200610.1904.tar
Binary files differ
diff --git a/localrepo/all-the-icons-20240108.559.tar b/localrepo/all-the-icons-20240108.559.tar
index 05e7e9cc..b6286073 100644
--- a/localrepo/all-the-icons-20240108.559.tar
+++ b/localrepo/all-the-icons-20240108.559.tar
Binary files differ
diff --git a/localrepo/all-the-icons-ivy-20190508.1803.tar b/localrepo/all-the-icons-ivy-20190508.1803.tar
index e9f3b8db..b1a03c3a 100644
--- a/localrepo/all-the-icons-ivy-20190508.1803.tar
+++ b/localrepo/all-the-icons-ivy-20190508.1803.tar
Binary files differ
diff --git a/localrepo/archive-contents b/localrepo/archive-contents
index a1c011bd..188655c2 100644
--- a/localrepo/archive-contents
+++ b/localrepo/archive-contents
@@ -19,7 +19,6 @@
(closql . [(20240405 1948) ((emacs (25 1)) (compat (29 1 4 5)) (emacsql (20240124))) "Store EIEIO objects using EmacSQL" tar])
(company . [(0 10 2) ((emacs (25 1))) "Modular text completion framework" tar])
(company-ledger . [(20210910 250) ((emacs (24 3)) (company (0 8 0))) "Fuzzy auto-completion for Ledger & friends" tar])
- (compat . [(29 1 4 5) ((emacs (24 4)) (seq (2 23))) "Emacs Lisp Compatibility Library" tar])
(counsel . [(0 14 2) ((emacs (24 5)) (ivy (0 14 2)) (swiper (0 14 2))) "Various completion functions using Ivy" tar])
(css-eldoc . [(20220415 1629) nil "an eldoc-mode plugin for CSS source code" tar])
(dash . [(20240405 946) ((emacs (24))) "A modern list library for Emacs" tar])
@@ -119,18 +118,18 @@
(pdf-view-restore . [(20190904 1708) ((pdf-tools (0 90)) (emacs (26 0))) "Support for opening last known pdf position in pdfview mode" tar])
(persist . [(0 6) nil "Persist Variables between Emacs Sessions" tar])
(persistent-scratch . [(20230225 1439) ((emacs (24))) "Preserve the scratch buffer across Emacs sessions" tar])
+ (poetry . [(20240329 1103) ((transient (0 2 0)) (pyvenv (1 2)) (emacs (25 1))) "Interface to Poetry" tar])
(popup . [(0 5 9) ((emacs (24 3))) "Visual Popup User Interface" tar])
(prescient . [(20240226 204) ((emacs (25 1))) "Better sorting and filtering" tar])
(projectile . [(2 8 0) ((emacs (25 1))) "Manage and navigate projects in Emacs easily" tar])
(promise . [(20210307 727) ((emacs (25 1))) "Promises/A+" tar])
- (racket-mode . [(1 0 20240319 160226) ((emacs (25 1))) "Racket editing, REPL, and more" tar])
+ (pyvenv . [(20211014 707) nil "Python virtual environment interface" tar])
(rainbow-delimiters . [(2 1 5) nil "Highlight brackets according to their depth" tar])
(rainbow-identifiers . [(20141102 1526) ((emacs (24))) "Highlight identifiers according to their names" tar])
(rainbow-mode . [(1 0 6) nil "Colorize color names in buffers" tar])
(request . [(0 3 3) ((emacs (24 4))) "Compatible layer for URL request in Emacs" tar])
(ripgrep . [(20220520 1410) nil "Front-end for ripgrep, a command line search tool" tar])
(s . [(20220902 1511) nil "The long lost Emacs string manipulation library." tar])
- (sicp . [(20200512 1137) nil "Structure and Interpretation of Computer Programs in info format" tar])
(simple-httpd . [(20230821 1458) ((cl-lib (0 3))) "pure elisp HTTP server" tar])
(spinner . [(1 7 4) ((emacs (24 3))) "Add spinners and progressline for ongoing operations" tar])
(sudo-edit . [(20220801 1317) ((emacs (24)) (cl-lib (0 5))) "Open files as another user" tar])
diff --git a/localrepo/async-1.9.8.tar b/localrepo/async-1.9.8.tar
index c16e3eee..d251f9ac 100644
--- a/localrepo/async-1.9.8.tar
+++ b/localrepo/async-1.9.8.tar
Binary files differ
diff --git a/localrepo/blacken-20231129.654.tar b/localrepo/blacken-20231129.654.tar
index 7d8d6e3d..41346c0a 100644
--- a/localrepo/blacken-20231129.654.tar
+++ b/localrepo/blacken-20231129.654.tar
Binary files differ
diff --git a/localrepo/calibredb-20240331.409.tar b/localrepo/calibredb-20240331.409.tar
index 5b25087b..9ec0895d 100644
--- a/localrepo/calibredb-20240331.409.tar
+++ b/localrepo/calibredb-20240331.409.tar
Binary files differ
diff --git a/localrepo/change-inner-20231203.1021.tar b/localrepo/change-inner-20231203.1021.tar
index 63a209b1..53e0ca6c 100644
--- a/localrepo/change-inner-20231203.1021.tar
+++ b/localrepo/change-inner-20231203.1021.tar
Binary files differ
diff --git a/localrepo/chess-2.0.5.tar b/localrepo/chess-2.0.5.tar
index 8a477760..570b29f5 100644
--- a/localrepo/chess-2.0.5.tar
+++ b/localrepo/chess-2.0.5.tar
Binary files differ
diff --git a/localrepo/company-0.10.2.tar b/localrepo/company-0.10.2.tar
index a719dfd0..4d3844f3 100644
--- a/localrepo/company-0.10.2.tar
+++ b/localrepo/company-0.10.2.tar
Binary files differ
diff --git a/localrepo/compat-29.1.4.5.tar b/localrepo/compat-29.1.4.5.tar
deleted file mode 100644
index 7a5fc787..00000000
--- a/localrepo/compat-29.1.4.5.tar
+++ /dev/null
Binary files differ
diff --git a/localrepo/counsel-0.14.2.tar b/localrepo/counsel-0.14.2.tar
index 5714cae4..429b5166 100644
--- a/localrepo/counsel-0.14.2.tar
+++ b/localrepo/counsel-0.14.2.tar
Binary files differ
diff --git a/localrepo/css-eldoc-20220415.1629.tar b/localrepo/css-eldoc-20220415.1629.tar
index 4d696fda..5dd2a869 100644
--- a/localrepo/css-eldoc-20220415.1629.tar
+++ b/localrepo/css-eldoc-20220415.1629.tar
Binary files differ
diff --git a/localrepo/dashboard-20240327.29.tar b/localrepo/dashboard-20240327.29.tar
index 0a4f36fd..62b2f527 100644
--- a/localrepo/dashboard-20240327.29.tar
+++ b/localrepo/dashboard-20240327.29.tar
Binary files differ
diff --git a/localrepo/devdocs-0.6.1.tar b/localrepo/devdocs-0.6.1.tar
index bf56b67e..fdfe4174 100644
--- a/localrepo/devdocs-0.6.1.tar
+++ b/localrepo/devdocs-0.6.1.tar
Binary files differ
diff --git a/localrepo/dired-hacks-utils-20230512.1107.tar b/localrepo/dired-hacks-utils-20230512.1107.tar
index ff669625..e53c0063 100644
--- a/localrepo/dired-hacks-utils-20230512.1107.tar
+++ b/localrepo/dired-hacks-utils-20230512.1107.tar
Binary files differ
diff --git a/localrepo/dirvish-20230519.1500.tar b/localrepo/dirvish-20230519.1500.tar
index 67b00264..9b2c4ee3 100644
--- a/localrepo/dirvish-20230519.1500.tar
+++ b/localrepo/dirvish-20230519.1500.tar
Binary files differ
diff --git a/localrepo/easy-hugo-20240129.1534.tar b/localrepo/easy-hugo-20240129.1534.tar
index 62129295..6e9c9e5b 100644
--- a/localrepo/easy-hugo-20240129.1534.tar
+++ b/localrepo/easy-hugo-20240129.1534.tar
Binary files differ
diff --git a/localrepo/ef-themes-1.6.1.tar b/localrepo/ef-themes-1.6.1.tar
index 314f7f51..53b4a4a1 100644
--- a/localrepo/ef-themes-1.6.1.tar
+++ b/localrepo/ef-themes-1.6.1.tar
Binary files differ
diff --git a/localrepo/elfeed-20240331.1348.tar b/localrepo/elfeed-20240331.1348.tar
index b369e753..a03a07d9 100644
--- a/localrepo/elfeed-20240331.1348.tar
+++ b/localrepo/elfeed-20240331.1348.tar
Binary files differ
diff --git a/localrepo/elfeed-dashboard-20210727.603.tar b/localrepo/elfeed-dashboard-20210727.603.tar
index 20cb7522..693c0ff0 100644
--- a/localrepo/elfeed-dashboard-20210727.603.tar
+++ b/localrepo/elfeed-dashboard-20210727.603.tar
Binary files differ
diff --git a/localrepo/emacsql-20240124.1601.tar b/localrepo/emacsql-20240124.1601.tar
index 220f0bd5..f54dde20 100644
--- a/localrepo/emacsql-20240124.1601.tar
+++ b/localrepo/emacsql-20240124.1601.tar
Binary files differ
diff --git a/localrepo/emojify-20210108.1111.tar b/localrepo/emojify-20210108.1111.tar
index 995fd1a0..8826c909 100644
--- a/localrepo/emojify-20210108.1111.tar
+++ b/localrepo/emojify-20210108.1111.tar
Binary files differ
diff --git a/localrepo/eradio-20210327.1000.tar b/localrepo/eradio-20210327.1000.tar
index 4fab8751..64a05ad8 100644
--- a/localrepo/eradio-20210327.1000.tar
+++ b/localrepo/eradio-20210327.1000.tar
Binary files differ
diff --git a/localrepo/erc-image-20210604.753.tar b/localrepo/erc-image-20210604.753.tar
index cbc16946..da89b8c9 100644
--- a/localrepo/erc-image-20210604.753.tar
+++ b/localrepo/erc-image-20210604.753.tar
Binary files differ
diff --git a/localrepo/esxml-20230308.2254.tar b/localrepo/esxml-20230308.2254.tar
index 10cf835f..12ab6306 100644
--- a/localrepo/esxml-20230308.2254.tar
+++ b/localrepo/esxml-20230308.2254.tar
Binary files differ
diff --git a/localrepo/exec-path-from-shell-2.1.tar b/localrepo/exec-path-from-shell-2.1.tar
index d481c68d..ed3c63e0 100644
--- a/localrepo/exec-path-from-shell-2.1.tar
+++ b/localrepo/exec-path-from-shell-2.1.tar
Binary files differ
diff --git a/localrepo/expand-region-1.0.0.tar b/localrepo/expand-region-1.0.0.tar
index a86b7e1d..0fd0857f 100644
--- a/localrepo/expand-region-1.0.0.tar
+++ b/localrepo/expand-region-1.0.0.tar
Binary files differ
diff --git a/localrepo/f-20240308.906.tar b/localrepo/f-20240308.906.tar
index 38e41a87..581b091a 100644
--- a/localrepo/f-20240308.906.tar
+++ b/localrepo/f-20240308.906.tar
Binary files differ
diff --git a/localrepo/feebleline-20190822.1401.tar b/localrepo/feebleline-20190822.1401.tar
index a8b83f63..89cb83f3 100644
--- a/localrepo/feebleline-20190822.1401.tar
+++ b/localrepo/feebleline-20190822.1401.tar
Binary files differ
diff --git a/localrepo/flycheck-34.1.tar b/localrepo/flycheck-34.1.tar
index fd03fde6..90b81328 100644
--- a/localrepo/flycheck-34.1.tar
+++ b/localrepo/flycheck-34.1.tar
Binary files differ
diff --git a/localrepo/flycheck-package-20210509.2325.tar b/localrepo/flycheck-package-20210509.2325.tar
index 8bfa1f18..c66e0370 100644
--- a/localrepo/flycheck-package-20210509.2325.tar
+++ b/localrepo/flycheck-package-20210509.2325.tar
Binary files differ
diff --git a/localrepo/flycheck-projectile-20201031.1952.tar b/localrepo/flycheck-projectile-20201031.1952.tar
index 145b68f2..434b3838 100644
--- a/localrepo/flycheck-projectile-20201031.1952.tar
+++ b/localrepo/flycheck-projectile-20201031.1952.tar
Binary files differ
diff --git a/localrepo/fontaine-1.0.0.tar b/localrepo/fontaine-1.0.0.tar
index b7125cb2..e79176a3 100644
--- a/localrepo/fontaine-1.0.0.tar
+++ b/localrepo/fontaine-1.0.0.tar
Binary files differ
diff --git a/localrepo/forge-20240405.1509.tar b/localrepo/forge-20240405.1509.tar
index 3ba4388a..ebf23ad1 100644
--- a/localrepo/forge-20240405.1509.tar
+++ b/localrepo/forge-20240405.1509.tar
Binary files differ
diff --git a/localrepo/free-keys-1.0.tar b/localrepo/free-keys-1.0.tar
index 758e79ab..5a5e67f5 100644
--- a/localrepo/free-keys-1.0.tar
+++ b/localrepo/free-keys-1.0.tar
Binary files differ
diff --git a/localrepo/ghub-20240311.1716.tar b/localrepo/ghub-20240311.1716.tar
index bfcf7bfe..3bd3e32e 100644
--- a/localrepo/ghub-20240311.1716.tar
+++ b/localrepo/ghub-20240311.1716.tar
Binary files differ
diff --git a/localrepo/github-dark-vscode-theme-20231011.2034.tar b/localrepo/github-dark-vscode-theme-20231011.2034.tar
index 5521ad82..21d2b534 100644
--- a/localrepo/github-dark-vscode-theme-20231011.2034.tar
+++ b/localrepo/github-dark-vscode-theme-20231011.2034.tar
Binary files differ
diff --git a/localrepo/go-mode-1.6.0.tar b/localrepo/go-mode-1.6.0.tar
index 42e2c90a..57cc7cae 100644
--- a/localrepo/go-mode-1.6.0.tar
+++ b/localrepo/go-mode-1.6.0.tar
Binary files differ
diff --git a/localrepo/gptel-20240404.813.tar b/localrepo/gptel-20240404.813.tar
index c9bf1b05..4fd7f9fd 100644
--- a/localrepo/gptel-20240404.813.tar
+++ b/localrepo/gptel-20240404.813.tar
Binary files differ
diff --git a/localrepo/graphql-0.1.2.tar b/localrepo/graphql-0.1.2.tar
index 8d3584e9..083784ef 100644
--- a/localrepo/graphql-0.1.2.tar
+++ b/localrepo/graphql-0.1.2.tar
Binary files differ
diff --git a/localrepo/helpful-20231028.516.tar b/localrepo/helpful-20231028.516.tar
index 10cb6d23..1191a166 100644
--- a/localrepo/helpful-20231028.516.tar
+++ b/localrepo/helpful-20231028.516.tar
Binary files differ
diff --git a/localrepo/hl-todo-20240329.1503.tar b/localrepo/hl-todo-20240329.1503.tar
index b965b88d..9e34d26d 100644
--- a/localrepo/hl-todo-20240329.1503.tar
+++ b/localrepo/hl-todo-20240329.1503.tar
Binary files differ
diff --git a/localrepo/htmlize-1.56.tar b/localrepo/htmlize-1.56.tar
index b867a7c4..01bbaf98 100644
--- a/localrepo/htmlize-1.56.tar
+++ b/localrepo/htmlize-1.56.tar
Binary files differ
diff --git a/localrepo/hydra-0.15.0.tar b/localrepo/hydra-0.15.0.tar
index 88a5a88b..e5ccfaab 100644
--- a/localrepo/hydra-0.15.0.tar
+++ b/localrepo/hydra-0.15.0.tar
Binary files differ
diff --git a/localrepo/impatient-mode-20230511.1746.tar b/localrepo/impatient-mode-20230511.1746.tar
index 545e3993..bb9f928e 100644
--- a/localrepo/impatient-mode-20230511.1746.tar
+++ b/localrepo/impatient-mode-20230511.1746.tar
Binary files differ
diff --git a/localrepo/iter2-20221104.1938.tar b/localrepo/iter2-20221104.1938.tar
index a543baa7..f75051ea 100644
--- a/localrepo/iter2-20221104.1938.tar
+++ b/localrepo/iter2-20221104.1938.tar
Binary files differ
diff --git a/localrepo/ivy-0.14.2.tar b/localrepo/ivy-0.14.2.tar
index f970c322..c1fee305 100644
--- a/localrepo/ivy-0.14.2.tar
+++ b/localrepo/ivy-0.14.2.tar
Binary files differ
diff --git a/localrepo/ivy-rich-20230425.1422.tar b/localrepo/ivy-rich-20230425.1422.tar
index 1d02e1bf..a0129b49 100644
--- a/localrepo/ivy-rich-20230425.1422.tar
+++ b/localrepo/ivy-rich-20230425.1422.tar
Binary files differ
diff --git a/localrepo/js2-mode-20231224.tar b/localrepo/js2-mode-20231224.tar
index 274d4c8d..a09e411f 100644
--- a/localrepo/js2-mode-20231224.tar
+++ b/localrepo/js2-mode-20231224.tar
Binary files differ
diff --git a/localrepo/kv-20140108.1534.tar b/localrepo/kv-20140108.1534.tar
index a600eed4..fc81b345 100644
--- a/localrepo/kv-20140108.1534.tar
+++ b/localrepo/kv-20140108.1534.tar
Binary files differ
diff --git a/localrepo/ledger-mode-20240326.2002.tar b/localrepo/ledger-mode-20240326.2002.tar
index 55e5cd5e..2c4e776c 100644
--- a/localrepo/ledger-mode-20240326.2002.tar
+++ b/localrepo/ledger-mode-20240326.2002.tar
Binary files differ
diff --git a/localrepo/ligature-20220808.1225.tar b/localrepo/ligature-20220808.1225.tar
index 3ebb682d..9376ae50 100644
--- a/localrepo/ligature-20220808.1225.tar
+++ b/localrepo/ligature-20220808.1225.tar
Binary files differ
diff --git a/localrepo/lsp-mode-20240406.356.tar b/localrepo/lsp-mode-20240406.356.tar
index 9376bdfa..122ad294 100644
--- a/localrepo/lsp-mode-20240406.356.tar
+++ b/localrepo/lsp-mode-20240406.356.tar
Binary files differ
diff --git a/localrepo/lsp-ui-20240330.2227.tar b/localrepo/lsp-ui-20240330.2227.tar
index 926f7ed4..76fe7785 100644
--- a/localrepo/lsp-ui-20240330.2227.tar
+++ b/localrepo/lsp-ui-20240330.2227.tar
Binary files differ
diff --git a/localrepo/lv-0.15.0.tar b/localrepo/lv-0.15.0.tar
index 087a1080..31d21c3a 100644
--- a/localrepo/lv-0.15.0.tar
+++ b/localrepo/lv-0.15.0.tar
Binary files differ
diff --git a/localrepo/madhat2r-theme-20170203.30.tar b/localrepo/madhat2r-theme-20170203.30.tar
index 3f134c43..578ba75a 100644
--- a/localrepo/madhat2r-theme-20170203.30.tar
+++ b/localrepo/madhat2r-theme-20170203.30.tar
Binary files differ
diff --git a/localrepo/magit-20240404.1901.tar b/localrepo/magit-20240404.1901.tar
index 5943cde0..9174ca22 100644
--- a/localrepo/magit-20240404.1901.tar
+++ b/localrepo/magit-20240404.1901.tar
Binary files differ
diff --git a/localrepo/magit-section-20240311.1407.tar b/localrepo/magit-section-20240311.1407.tar
index b4fd28df..6a5a7936 100644
--- a/localrepo/magit-section-20240311.1407.tar
+++ b/localrepo/magit-section-20240311.1407.tar
Binary files differ
diff --git a/localrepo/malyon-20161208.2125.tar b/localrepo/malyon-20161208.2125.tar
index 439128bd..8e5a6aa0 100644
--- a/localrepo/malyon-20161208.2125.tar
+++ b/localrepo/malyon-20161208.2125.tar
Binary files differ
diff --git a/localrepo/marginalia-1.6.tar b/localrepo/marginalia-1.6.tar
index ddcdffef..d9d8f274 100644
--- a/localrepo/marginalia-1.6.tar
+++ b/localrepo/marginalia-1.6.tar
Binary files differ
diff --git a/localrepo/markdown-mode-2.6.tar b/localrepo/markdown-mode-2.6.tar
index a2272247..7d5405bd 100644
--- a/localrepo/markdown-mode-2.6.tar
+++ b/localrepo/markdown-mode-2.6.tar
Binary files differ
diff --git a/localrepo/mood-line-20231210.1309.tar b/localrepo/mood-line-20231210.1309.tar
index 393b8269..7f2738bb 100644
--- a/localrepo/mood-line-20231210.1309.tar
+++ b/localrepo/mood-line-20231210.1309.tar
Binary files differ
diff --git a/localrepo/nerd-icons-20240319.833.tar b/localrepo/nerd-icons-20240319.833.tar
index bca92cc9..51f6fdc7 100644
--- a/localrepo/nerd-icons-20240319.833.tar
+++ b/localrepo/nerd-icons-20240319.833.tar
Binary files differ
diff --git a/localrepo/nerd-icons-ibuffer-20230417.1549.tar b/localrepo/nerd-icons-ibuffer-20230417.1549.tar
index 25f6eb8e..639df931 100644
--- a/localrepo/nerd-icons-ibuffer-20230417.1549.tar
+++ b/localrepo/nerd-icons-ibuffer-20230417.1549.tar
Binary files differ
diff --git a/localrepo/nov-20230715.1434.tar b/localrepo/nov-20230715.1434.tar
index c3217ff5..941c3f6d 100644
--- a/localrepo/nov-20230715.1434.tar
+++ b/localrepo/nov-20230715.1434.tar
Binary files differ
diff --git a/localrepo/olivetti-20231104.538.tar b/localrepo/olivetti-20231104.538.tar
index dfc5cf6d..158d5912 100644
--- a/localrepo/olivetti-20231104.538.tar
+++ b/localrepo/olivetti-20231104.538.tar
Binary files differ
diff --git a/localrepo/org-contacts-1.1.tar b/localrepo/org-contacts-1.1.tar
index 35065a14..9e8b02f8 100644
--- a/localrepo/org-contacts-1.1.tar
+++ b/localrepo/org-contacts-1.1.tar
Binary files differ
diff --git a/localrepo/org-drill-2.7.0.tar b/localrepo/org-drill-2.7.0.tar
index f3efdf8b..bce52415 100644
--- a/localrepo/org-drill-2.7.0.tar
+++ b/localrepo/org-drill-2.7.0.tar
Binary files differ
diff --git a/localrepo/org-roam-20240114.1941.tar b/localrepo/org-roam-20240114.1941.tar
index adb70660..905acb46 100644
--- a/localrepo/org-roam-20240114.1941.tar
+++ b/localrepo/org-roam-20240114.1941.tar
Binary files differ
diff --git a/localrepo/org-super-agenda-20240301.1602.tar b/localrepo/org-super-agenda-20240301.1602.tar
index 19b13e84..885a7886 100644
--- a/localrepo/org-super-agenda-20240301.1602.tar
+++ b/localrepo/org-super-agenda-20240301.1602.tar
Binary files differ
diff --git a/localrepo/org-superstar-1.5.1.tar b/localrepo/org-superstar-1.5.1.tar
index 3995f3c2..7cd0cdc4 100644
--- a/localrepo/org-superstar-1.5.1.tar
+++ b/localrepo/org-superstar-1.5.1.tar
Binary files differ
diff --git a/localrepo/ox-hugo-20240305.1923.tar b/localrepo/ox-hugo-20240305.1923.tar
index 0a4cbd84..ebeeda92 100644
--- a/localrepo/ox-hugo-20240305.1923.tar
+++ b/localrepo/ox-hugo-20240305.1923.tar
Binary files differ
diff --git a/localrepo/package-build-20240306.2234.tar b/localrepo/package-build-20240306.2234.tar
index 2d5df205..01a922e6 100644
--- a/localrepo/package-build-20240306.2234.tar
+++ b/localrepo/package-build-20240306.2234.tar
Binary files differ
diff --git a/localrepo/package-lint-0.23.tar b/localrepo/package-lint-0.23.tar
index 30ba3b51..8590a874 100644
--- a/localrepo/package-lint-0.23.tar
+++ b/localrepo/package-lint-0.23.tar
Binary files differ
diff --git a/localrepo/pdf-tools-1.1.0.tar b/localrepo/pdf-tools-1.1.0.tar
index 28d82bda..be713b47 100644
--- a/localrepo/pdf-tools-1.1.0.tar
+++ b/localrepo/pdf-tools-1.1.0.tar
Binary files differ
diff --git a/localrepo/pdf-view-restore-20190904.1708.tar b/localrepo/pdf-view-restore-20190904.1708.tar
index b020f2d5..cf811794 100644
--- a/localrepo/pdf-view-restore-20190904.1708.tar
+++ b/localrepo/pdf-view-restore-20190904.1708.tar
Binary files differ
diff --git a/localrepo/persist-0.6.tar b/localrepo/persist-0.6.tar
index 0d96deb6..44c0f722 100644
--- a/localrepo/persist-0.6.tar
+++ b/localrepo/persist-0.6.tar
Binary files differ
diff --git a/localrepo/poetry-20240329.1103.tar b/localrepo/poetry-20240329.1103.tar
new file mode 100644
index 00000000..75018b7b
--- /dev/null
+++ b/localrepo/poetry-20240329.1103.tar
Binary files differ
diff --git a/localrepo/popup-0.5.9.tar b/localrepo/popup-0.5.9.tar
index 3c63f0c3..945610a3 100644
--- a/localrepo/popup-0.5.9.tar
+++ b/localrepo/popup-0.5.9.tar
Binary files differ
diff --git a/localrepo/projectile-2.8.0.tar b/localrepo/projectile-2.8.0.tar
index eb09813a..005099ca 100644
--- a/localrepo/projectile-2.8.0.tar
+++ b/localrepo/projectile-2.8.0.tar
Binary files differ
diff --git a/localrepo/promise-20210307.727.tar b/localrepo/promise-20210307.727.tar
index fe812a33..bdf27e10 100644
--- a/localrepo/promise-20210307.727.tar
+++ b/localrepo/promise-20210307.727.tar
Binary files differ
diff --git a/localrepo/pyvenv-20211014.707.tar b/localrepo/pyvenv-20211014.707.tar
new file mode 100644
index 00000000..bfc9b425
--- /dev/null
+++ b/localrepo/pyvenv-20211014.707.tar
Binary files differ
diff --git a/localrepo/racket-mode-1.0.20240319.160226.tar b/localrepo/racket-mode-1.0.20240319.160226.tar
deleted file mode 100644
index 77413768..00000000
--- a/localrepo/racket-mode-1.0.20240319.160226.tar
+++ /dev/null
Binary files differ
diff --git a/localrepo/rainbow-mode-1.0.6.tar b/localrepo/rainbow-mode-1.0.6.tar
index 13acf33c..69b279fa 100644
--- a/localrepo/rainbow-mode-1.0.6.tar
+++ b/localrepo/rainbow-mode-1.0.6.tar
Binary files differ
diff --git a/localrepo/request-0.3.3.tar b/localrepo/request-0.3.3.tar
index 423a7d49..2b77881b 100644
--- a/localrepo/request-0.3.3.tar
+++ b/localrepo/request-0.3.3.tar
Binary files differ
diff --git a/localrepo/ripgrep-20220520.1410.tar b/localrepo/ripgrep-20220520.1410.tar
index 7ef4b7f2..5fc97933 100644
--- a/localrepo/ripgrep-20220520.1410.tar
+++ b/localrepo/ripgrep-20220520.1410.tar
Binary files differ
diff --git a/localrepo/s-20220902.1511.tar b/localrepo/s-20220902.1511.tar
index 5b160aa3..066b0c27 100644
--- a/localrepo/s-20220902.1511.tar
+++ b/localrepo/s-20220902.1511.tar
Binary files differ
diff --git a/localrepo/sicp-20200512.1137.tar b/localrepo/sicp-20200512.1137.tar
deleted file mode 100644
index a01ae053..00000000
--- a/localrepo/sicp-20200512.1137.tar
+++ /dev/null
Binary files differ
diff --git a/localrepo/simple-httpd-20230821.1458.tar b/localrepo/simple-httpd-20230821.1458.tar
index fb62c692..00218834 100644
--- a/localrepo/simple-httpd-20230821.1458.tar
+++ b/localrepo/simple-httpd-20230821.1458.tar
Binary files differ
diff --git a/localrepo/spinner-1.7.4.tar b/localrepo/spinner-1.7.4.tar
index ad940748..07f6dd74 100644
--- a/localrepo/spinner-1.7.4.tar
+++ b/localrepo/spinner-1.7.4.tar
Binary files differ
diff --git a/localrepo/sudo-edit-20220801.1317.tar b/localrepo/sudo-edit-20220801.1317.tar
index 255fae8e..bc5416ce 100644
--- a/localrepo/sudo-edit-20220801.1317.tar
+++ b/localrepo/sudo-edit-20220801.1317.tar
Binary files differ
diff --git a/localrepo/swiper-0.14.2.tar b/localrepo/swiper-0.14.2.tar
index ed5cdbba..b3d04dbd 100644
--- a/localrepo/swiper-0.14.2.tar
+++ b/localrepo/swiper-0.14.2.tar
Binary files differ
diff --git a/localrepo/tablist-1.0.tar b/localrepo/tablist-1.0.tar
index ab4b983f..b912fea2 100644
--- a/localrepo/tablist-1.0.tar
+++ b/localrepo/tablist-1.0.tar
Binary files differ
diff --git a/localrepo/telega-20240322.901.tar b/localrepo/telega-20240322.901.tar
index 830c2ebd..0ce12a42 100644
--- a/localrepo/telega-20240322.901.tar
+++ b/localrepo/telega-20240322.901.tar
Binary files differ
diff --git a/localrepo/tide-20230620.1444.tar b/localrepo/tide-20230620.1444.tar
index 7a787873..0d679617 100644
--- a/localrepo/tide-20230620.1444.tar
+++ b/localrepo/tide-20230620.1444.tar
Binary files differ
diff --git a/localrepo/tomelr-0.4.3.tar b/localrepo/tomelr-0.4.3.tar
index 16b79075..0d6a9ea0 100644
--- a/localrepo/tomelr-0.4.3.tar
+++ b/localrepo/tomelr-0.4.3.tar
Binary files differ
diff --git a/localrepo/toml-mode-20161107.1800.tar b/localrepo/toml-mode-20161107.1800.tar
index cd9731df..8e6921f4 100644
--- a/localrepo/toml-mode-20161107.1800.tar
+++ b/localrepo/toml-mode-20161107.1800.tar
Binary files differ
diff --git a/localrepo/transient-20240405.1443.tar b/localrepo/transient-20240405.1443.tar
index 406cfddb..975259d0 100644
--- a/localrepo/transient-20240405.1443.tar
+++ b/localrepo/transient-20240405.1443.tar
Binary files differ
diff --git a/localrepo/tree-sitter-20220212.1632.tar b/localrepo/tree-sitter-20220212.1632.tar
index 6826b158..1abce838 100644
--- a/localrepo/tree-sitter-20220212.1632.tar
+++ b/localrepo/tree-sitter-20220212.1632.tar
Binary files differ
diff --git a/localrepo/treesit-auto-20240401.1240.tar b/localrepo/treesit-auto-20240401.1240.tar
index eee0aa2a..93e05b88 100644
--- a/localrepo/treesit-auto-20240401.1240.tar
+++ b/localrepo/treesit-auto-20240401.1240.tar
Binary files differ
diff --git a/localrepo/tsc-20220212.1632.tar b/localrepo/tsc-20220212.1632.tar
index d580f2a3..245f1da9 100644
--- a/localrepo/tsc-20220212.1632.tar
+++ b/localrepo/tsc-20220212.1632.tar
Binary files differ
diff --git a/localrepo/visual-fill-column-2.6.2.tar b/localrepo/visual-fill-column-2.6.2.tar
index 9aad9034..aeeb15d4 100644
--- a/localrepo/visual-fill-column-2.6.2.tar
+++ b/localrepo/visual-fill-column-2.6.2.tar
Binary files differ
diff --git a/localrepo/vscode-icon-20230330.2206.tar b/localrepo/vscode-icon-20230330.2206.tar
index c77a2699..8a358e4f 100644
--- a/localrepo/vscode-icon-20230330.2206.tar
+++ b/localrepo/vscode-icon-20230330.2206.tar
Binary files differ
diff --git a/localrepo/vterm-20240325.1551.tar b/localrepo/vterm-20240325.1551.tar
index 2842b46c..4b0990e7 100644
--- a/localrepo/vterm-20240325.1551.tar
+++ b/localrepo/vterm-20240325.1551.tar
Binary files differ
diff --git a/localrepo/web-mode-17.3.19.tar b/localrepo/web-mode-17.3.19.tar
index 57e38d2c..4caa4c2f 100644
--- a/localrepo/web-mode-17.3.19.tar
+++ b/localrepo/web-mode-17.3.19.tar
Binary files differ
diff --git a/localrepo/which-key-3.6.0.tar b/localrepo/which-key-3.6.0.tar
index d0f57954..26aed842 100644
--- a/localrepo/which-key-3.6.0.tar
+++ b/localrepo/which-key-3.6.0.tar
Binary files differ
diff --git a/localrepo/wiki-summary-20181010.1824.tar b/localrepo/wiki-summary-20181010.1824.tar
index b1ff4405..22ea72c2 100644
--- a/localrepo/wiki-summary-20181010.1824.tar
+++ b/localrepo/wiki-summary-20181010.1824.tar
Binary files differ
diff --git a/localrepo/windsize-20181029.2257.tar b/localrepo/windsize-20181029.2257.tar
index 49c0ba19..ad475ee6 100644
--- a/localrepo/windsize-20181029.2257.tar
+++ b/localrepo/windsize-20181029.2257.tar
Binary files differ
diff --git a/localrepo/with-editor-20240101.2226.tar b/localrepo/with-editor-20240101.2226.tar
index 276fa1ed..29c69688 100644
--- a/localrepo/with-editor-20240101.2226.tar
+++ b/localrepo/with-editor-20240101.2226.tar
Binary files differ
diff --git a/localrepo/yaml-20231211.1501.tar b/localrepo/yaml-20231211.1501.tar
index de48c563..adc0aa53 100644
--- a/localrepo/yaml-20231211.1501.tar
+++ b/localrepo/yaml-20231211.1501.tar
Binary files differ
diff --git a/localrepo/yaml-mode-0.0.16.tar b/localrepo/yaml-mode-0.0.16.tar
index 55ae5e74..06885825 100644
--- a/localrepo/yaml-mode-0.0.16.tar
+++ b/localrepo/yaml-mode-0.0.16.tar
Binary files differ
diff --git a/localrepo/yasnippet-0.14.1.tar b/localrepo/yasnippet-0.14.1.tar
index d1a4b942..30576abb 100644
--- a/localrepo/yasnippet-0.14.1.tar
+++ b/localrepo/yasnippet-0.14.1.tar
Binary files differ
diff --git a/localrepo/ztree-1.0.6.tar b/localrepo/ztree-1.0.6.tar
index 1cbee399..b6e5b0d7 100644
--- a/localrepo/ztree-1.0.6.tar
+++ b/localrepo/ztree-1.0.6.tar
Binary files differ
diff --git a/modules/ai-config.el b/modules/ai-config.el
index 14380a2b..2240d0ac 100644
--- a/modules/ai-config.el
+++ b/modules/ai-config.el
@@ -41,11 +41,26 @@
. "You are a large language model and a careful programmer. Provide code
and only code as output without any additional text, prompt or note.")
(writing
- . "You are a large language model and a writing assistant. Respond concisely.")
+ . "You are a large language model and a writing assistant. Respond
+ concisely.")
(chat
- . "You are a large language model and a conversation partner. Respond concisely.")))
+ . "You are a large language model and a conversation partner. Respond
+ concisely.")))
+ ;; grab the secret from ~/.authinfo.gpg
(setq gptel-api-key (auth-source-pick-first-password :host "api.openai.com")))
+;; ----------------------------- Gptel Send Region -----------------------------
+;; convenience function to send a selection to Gptel.
+
+(defun cj/gptel-send-region (&optional prefix)
+ "Verify a region is selected and call gptel-send with PREFIX."
+ (interactive "P")
+ (if (use-region-p)
+ (gptel-send (prefix-numeric-value prefix))
+ (error "No region selected")))
+
+(global-set-key (kbd "C-; g") 'cj/gptel-send-region)
+
(provide 'ai-config)
-;;; ai-config.el ends here.
+;;; ai-config.el ends here
diff --git a/modules/config-utilities.el b/modules/config-utilities.el
index 4e0fd923..240c6d14 100644
--- a/modules/config-utilities.el
+++ b/modules/config-utilities.el
@@ -45,7 +45,7 @@ Will recompile natively if supported, or byte-compiled if not."
;; removes all compiled files and deletes the eln directory
(defun cj/delete-emacs-home-compiled-files ()
- "Delete all compiled files recursively in \\='user-emacs-directory\\='."
+ "Delete all compiled files recursively in \='user-emacs-directory\='."
(interactive)
(message "Deleting compiled files under %s. This may take a while." user-emacs-directory)
(require 'find-lisp) ;; make sure the package is required
diff --git a/modules/custom-functions.el b/modules/custom-functions.el
index fe617ed1..414d3108 100644
--- a/modules/custom-functions.el
+++ b/modules/custom-functions.el
@@ -130,6 +130,32 @@ buffer."
(indent-region start-pos end-pos nil)
(untabify start-pos end-pos))))
+;; ------------------- Remove Leading And Trailing Whitespace ------------------
+;; removes leading and trailing whitespace on line, region, or buffer.
+
+(defun cj/remove-leading-trailing-whitespace (start end)
+ "Remove leading and trailing whitespace in a region or buffer.
+When called interactively, if a region is active, remove leading
+and trailing spaces in the region. Else, remove from the current line.
+If called with a prefix argument (C-u), remove throughout the entire buffer.
+START and END define region."
+ (interactive "r")
+ (let (deactivate-mark)
+ (if (or (use-region-p) current-prefix-arg)
+ (save-restriction
+ (if current-prefix-arg
+ (progn (widen) (setq start (point-min) end (point-max)))
+ (narrow-to-region start end))
+ (goto-char (point-min))
+ (while (re-search-forward "^[ \t]+" nil t) (replace-match ""))
+ (goto-char (point-min))
+ (while (re-search-forward "[ \t]+$" nil t) (replace-match "")))
+ (beginning-of-line)
+ (while (looking-at "^[ \t]+") (replace-match ""))
+ (end-of-line)
+ (while (re-search-backward "[ \t]+$" (line-beginning-position) t)
+ (replace-match "")))))
+
;; --------------------------- Arrayify / Unarrayify ---------------------------
;; unquoted text on newlines to quoted comma separated strings (and vice-versa).
@@ -137,7 +163,7 @@ buffer."
"Turn unquoted text on newlines into quoted comma-separated strings.
START and END indicate the region selected.
QUOTE is the characters used for quotations (i.e, \=' or \")"
- (interactive "r\nMQuote: ")
+ (interactive "r\nMQuotation character to use for array element: ")
(let ((insertion
(mapconcat
(lambda (x) (format "%s%s%s" quote x quote))
@@ -456,7 +482,16 @@ Uses `sortable-time-format' for the formatting the date/time."
(defadvice align-regexp (around align-regexp-with-spaces activate)
"Avoid tabs when aligning text."
(let ((indent-tabs-mode nil))
- ad-do-it))
+ ad-do-it))
+
+;; ----------------------------- Merge List To List ----------------------------
+;; Convenience method for merging two lists together
+;; https://emacs.stackexchange.com/questions/38008/adding-many-items-to-a-list/68048#68048
+
+(defun cj/merge-list-to-list (dst src)
+ "Merge content of the 2nd list SRC with the 1st one DST."
+ (set dst
+ (append (eval dst) src)))
;; ------------------------------ Personal Keymap ------------------------------
;; a keymap to use the above functions. prefix key: "C-;"
@@ -472,20 +507,20 @@ Uses `sortable-time-format' for the formatting the date/time."
(define-key map "D" 'cj/remove-duplicate-lines-from-region-or-buffer)
(define-key map ")" #'cj/jump-to-matching-paren)
- (define-key map "-" #'cj/hyphenate-whitespace-in-region)
- (define-key map "p" 'cj/append-to-lines-in-region-or-buffer)
- (define-key map "1" 'cj/alphabetize-and-replace-regibon)
- (define-key map "C" 'display-fill-column-indicator-mode)
- (define-key map "w" 'cj/wrap-region-as-code-span)
- (define-key map "f" 'cj/format-region-or-buffer)
- (define-key map "h" 'cj/hyphenate-region)
- (define-key map "j" 'cj/join-line-or-region)
- (define-key map "J" 'cj/join-paragraph)
- (define-key map "r" 'align-regexp)
- (define-key map "l" 'downcase-dwim)
- (define-key map "u" 'cj/title-case-region)
- (define-key map "U" 'upcase-region)
- (define-key map "#" 'cj/count-words-buffer-or-region)
+ (define-key map "-" #'cj/hyphenate-region)
+ (define-key map "U" 'upcase-region)
+ (define-key map "w" 'cj/remove-leading-trailing-whitespace)
+ (define-key map "#" 'cj/count-words-buffer-or-region)
+ (define-key map "1" 'cj/alphabetize-and-replace-region)
+ (define-key map "C" 'display-fill-column-indicator-mode)
+ (define-key map "J" 'cj/join-paragraph)
+ (define-key map "f" 'cj/format-region-or-buffer)
+ (define-key map "j" 'cj/join-line-or-region)
+ (define-key map "l" 'downcase-dwim)
+ (define-key map "p" 'cj/append-to-lines-in-region-or-buffer)
+ (define-key map "r" 'align-regexp)
+ (define-key map "u" 'cj/title-case-region)
+ (define-key map "c" 'cj/wrap-region-as-code-span)
map)
"My personal key map.")
(global-set-key (kbd "C-;") personal-keymap)
diff --git a/modules/dashboard-config.el b/modules/dashboard-config.el
index 6340c32b..f9c40ee5 100644
--- a/modules/dashboard-config.el
+++ b/modules/dashboard-config.el
@@ -94,11 +94,6 @@
(setq dashboard-set-footer nil) ;; don't show footer and quotes
;; == banner
- (custom-set-faces '(dashboard-banner-logo-title
- ((t(:slant oblique
- :height 170
- :family "Merriweather")))))
-
(setq dashboard-startup-banner (concat user-emacs-directory "assets/M-x_butterfly.png"))
(setq dashboard-banner-logo-title "Emacs: The Editor That Saves Your Soul")
diff --git a/modules/elfeed-config.el b/modules/elfeed-config.el
index 37a0e12f..901ae0b1 100644
--- a/modules/elfeed-config.el
+++ b/modules/elfeed-config.el
@@ -13,13 +13,13 @@
("w" . eww-open-in-new-buffer))
(:map elfeed-search-mode-map
("w" . cj/elfeed-eww-open) ;; opens in eww
- ("b" . cj/elfeed-browser-open) ;; opens in external browser
- ("d" . cj/elfeed-youtube-dl) ;; async download with yt-dlp and tsp
- ("p" . cj/play-with-mpv) ;; async play with mpv
- ("R" . cj/elfeed-mark-all-as-read) ;; capital marks all as read, since upper case marks one as read
- ("U" . cj/elfeed-mark-all-as-unread)) ;; capital marks all as unread, since lower case marks one as unread
+ ("b" . cj/elfeed-browser-open) ;; opens in external browser
+ ("d" . cj/elfeed-youtube-dl) ;; async download with yt-dlp and tsp
+ ("p" . cj/play-with-mpv) ;; async play with mpv
+ ("R" . cj/elfeed-mark-all-as-read) ;; capital marks all as read, since upper case marks one as read
+ ("U" . cj/elfeed-mark-all-as-unread)) ;; capital marks all as unread, since lower case marks one as unread
:config
- (setq elfeed-db-directory "~/sync/org/ElfeedDB")
+ (setq elfeed-db-directory (concat user-emacs-directory ".elfeed-db"))
(setq-default elfeed-search-title-max-width 150)
(setq-default elfeed-search-title-min-width 80)
(setq-default elfeed-search-filter "+mustread +unread"))
@@ -30,7 +30,8 @@
:defer .5
:after elfeed
:config
- (setq rmh-elfeed-org-files (list (concat sync-dir "elfeed-feeds.org")))
+ (setq rmh-elfeed-org-files
+ (list (concat user-emacs-directory "assets/elfeed-feeds.org")))
(elfeed-org))
;; ------------------------------ Elfeed Dashboard -----------------------------
@@ -40,7 +41,7 @@
:bind
("M-R" . elfeed-dashboard)
:config
- (setq elfeed-dashboard-file (concat user-emacs-directory "elfeed-dashboard.org"))
+ (setq elfeed-dashboard-file (concat user-emacs-directory "assets/elfeed-dashboard.org"))
;; update feed counts on elfeed-quit
(advice-add 'elfeed-search-quit-window :after #'elfeed-dashboard-update-links))
@@ -87,16 +88,16 @@
(add-hook 'eww-after-render-hook #'cj/eww-readable-nonce)
(eww-browse-url it))
(mapc #'elfeed-search-update-entry entries)
- (unless (use-region-p) (forward-line))))
+ (unless (use-region-p) (forward-line))))
;; hook for cj/elfeed-eww-open to open entry in eww readable mode
;; https://emacs.stackexchange.com/questions/36284/how-to-open-eww-in-readable-mode/47757
(defun cj/eww-readable-nonce ()
"Once-off call to eww-readable after EWW is done rendering."
(unwind-protect
- (progn
- (eww-readable)
- (goto-char (point-min)))
+ (progn
+ (eww-readable)
+ (goto-char (point-min)))
(remove-hook 'eww-after-render-hook #'cj/eww-readable-nonce)))
(defun cj/elfeed-browser-open (&optional use-generic-p)
@@ -126,8 +127,8 @@
(defun cj/yt-dl-it (url)
"Downloads the URL in an async shell."
(let ((default-directory "~/videos"))
- (save-window-excursion
- (async-shell-command (format "tsp yt-dlp --add-metadata -ic -o '%%(channel)s-%%(title)s.%%(ext)s' '%s'" url)))))
+ (save-window-excursion
+ (async-shell-command (format "tsp yt-dlp --add-metadata -ic -o '%%(channel)s-%%(title)s.%%(ext)s' '%s'" url)))))
(defun cj/play-with-mpv (&optional use-generic-p)
"MPV link."
@@ -144,7 +145,5 @@
"Play the URL with mpv in an async shell."
(async-shell-command (format "mpv '%s'" url)))
-
-
(provide 'elfeed-config)
;;; elfeed-config.el ends here
diff --git a/modules/flycheck-config.el b/modules/flycheck-config.el
index 1bad4cbd..f0ca71fe 100644
--- a/modules/flycheck-config.el
+++ b/modules/flycheck-config.el
@@ -6,7 +6,7 @@
;;; Code:
(defun cj/prose-helpers-on ()
- "Ensure that abbrev, flyspell, and flycheck are on."
+ "Ensure that abbrev, flyspell, and flycheck are all on."
(interactive)
(if (not (abbrev-mode))
(abbrev-mode))
@@ -19,7 +19,13 @@
(use-package flycheck
:defer .5
:hook (sh-mode emacs-lisp-mode)
- :bind ("C-; ?" . flycheck-list-errors)
+ :preface
+ (defun cj/flycheck-list-errors ()
+ "Display flycheck's error list and switch to its buffer."
+ (interactive)
+ (flycheck-list-errors)
+ (switch-to-buffer-other-window "*Flycheck errors*"))
+ :bind ("C-; ?" . cj/flycheck-list-errors)
:config
;; don't warn about double-spaces after period.
(setq-default checkdoc-arguments '("sentence-end-double-space" nil "warn-escape" nil))
@@ -35,13 +41,5 @@
:modes (text-mode markdown-mode gfm-mode))
(add-to-list 'flycheck-checkers 'proselint))
-;; ;; https://github.com/emacs-grammarly/flycheck-grammarly
-;; (use-package flycheck-grammarly
-;; :defer 1
-;; :after flycheck
-;; :config
-;; (with-eval-after-load 'flycheck
-;; (flycheck-grammarly-setup)))
-
(provide 'flycheck-config)
;;; flycheck-config.el ends here
diff --git a/modules/font-config.el b/modules/font-config.el
index a5ed2771..6678d2f9 100644
--- a/modules/font-config.el
+++ b/modules/font-config.el
@@ -41,10 +41,18 @@
:default-family "Codelia Ligatures")
(Liberation_Mono-Only
:default-family "Liberation Mono")
+ (12-point-font
+ :default-height 120)
+ (13-point-font
+ :default-height 130)
+ (11-point-font
+ :default-height 110)
+ (10-point-font
+ :default-height 100)
(t ;; shared fallback properties go here
:default-family "Berkeley Mono"
:default-weight regular
- :default-height 130
+ :default-height 110
:fixed-pitch-family nil ;; falls back to :default-family
:fixed-pitch-weight nil ;; falls back to :default-weight
:fixed-pitch-height 1.0
@@ -70,7 +78,7 @@ Note that server-after-make-frame-hook is available only in Emacs 27+."
(interactive)
(fontaine-set-preset 'Berkeley-Only)
(if (daemonp)
- (remove-hook 'server-after-make-frame-hook #'cj/apply-font-settings-after-ui-creation)))
+ (remove-hook 'server-after-make-frame-hook #'cj/apply-font-settings-after-ui-creation)))
(if (daemonp)
(add-hook 'server-after-make-frame-hook #'cj/apply-font-settings-after-ui-creation)
@@ -141,7 +149,7 @@ Note that server-after-make-frame-hook is available only in Emacs 27+."
(interactive)
(pop-to-buffer "*Available Fonts*" '(display-buffer-in-side-window . ((side . right)(window-width . fit-window-to-buffer))))
(let ((font-list (font-family-list)))
- (setq font-list (remove-duplicates (cl-sort font-list 'string-lessp :key 'downcase)))
+ (setq font-list (cl-remove-duplicates (cl-sort font-list 'string-lessp :key 'downcase)))
(with-current-buffer "*Available Fonts*"
(erase-buffer)
(dolist (font-family font-list)
diff --git a/modules/help-utils.el b/modules/help-utils.el
index 66286704..199e6815 100644
--- a/modules/help-utils.el
+++ b/modules/help-utils.el
@@ -10,7 +10,7 @@
(global-set-key (kbd "C-h P") 'list-packages) ;; bring up the package menu
-;;;; ---------------------------- Helpful ----------------------------
+;; ---------------------------------- Helpful ----------------------------------
(use-package helpful
:defer .5
@@ -27,7 +27,7 @@
(setq counsel-describe-variable-function #'helpful-variable))
-;;;; ------------------------------ Man ------------------------------
+;; ------------------------------------ Man ------------------------------------
(use-package man
:defer 1
@@ -35,7 +35,7 @@
:bind ("C-h M" . man))
-;;;; ------------------------------ Info -----------------------------
+;; ------------------------------------ Info -----------------------------------
(use-package info
:defer 1
@@ -58,7 +58,7 @@
(push (concat user-emacs-directory "assets/info") Info-directory-list)
(add-to-list 'auto-mode-alist '("\\.info\\'" . open-with-info-mode)))
-;;;; ---------------------------- Devdocs ----------------------------
+;; ---------------------------------- Devdocs ----------------------------------
(use-package devdocs
:defer 1
@@ -72,18 +72,17 @@
(define-key devdocs-mode-map "b" 'devdocs-go-back)
(define-key devdocs-mode-map "f" 'devdocs-go-forward))
-;;;; ------------------------------- TLDR ------------------------------
+;; ------------------------------------ TLDR -----------------------------------
(use-package tldr
:defer 1
:bind ("C-h T" . tldr))
-;;;; -------------------------- Wiki-Summary -------------------------
+;; -------------------------------- Wiki Summary -------------------------------
(use-package wiki-summary
:defer 1
:bind ("C-h W" . wiki-summary))
-
(provide 'help-utils)
;;; help-utils.el ends here
diff --git a/modules/org-capture-config.el b/modules/org-capture-config.el
index 2ce8494b..3cdb45fd 100644
--- a/modules/org-capture-config.el
+++ b/modules/org-capture-config.el
@@ -1,8 +1,8 @@
-;;; org-capture-config.el --- Org Capture/Refile -*- lexical-binding: t; -*-
+;;; org-capture-config.el --- Org Capture Configuration -*- lexical-binding: t; -*-
;;; Commentary:
;; Customizations related to org-capture and org-refile is here.
-;; This includes 'web-clipper' functionality.
+;; This includes 'org-webpage-clipper' functionality.
;; To ensure the code below is only loaded after org-mode, all code is wrapped in an
;; eval-after-load function.
@@ -13,93 +13,94 @@
(with-eval-after-load 'org
- ;; ---------------------- Org-Website-Clipper ----------------------
- ;; Saves a copy of the page eww is visiting in an org file for offline reading
- ;; In other words, it's a "Poor Man's Pocket/Instapaper"
+ ;; ---------------------- Org-Webpage-Clipper ----------------------
+ ;; Saves a copy of the page eww is visiting in the 'articles'-file for offline
+ ;; reading. In other words, it's a "Poor Man's Pocket/Instapaper"
-
- (defun org-website-clipper ()
- "Capture a web page for later viewing in an org-file.
+ (defun org-webpage-clipper ()
+ "Capture a web page for later viewing in an org-file.
Encodes all links and marks that may interfere with org mode
display, then inserts the content into a file for later offline use.
This is meant to be used in coordination with an org-capture-template.
Example Template:
- (\"w\" \"Website\" plain (function org-website-clipper)
- \"* %a\\nCaptured On: %U\\n\" :immediate-finish t)))
-
-Requires Emacs 15 and the 2017-02-12 or later version of org-eww.el."
- (interactive)
-
- ;; Ensure valid major mode before encoding
- (cond
- ((eq major-mode 'w3m-mode)
- (org-w3m-copy-for-org-mode))
- ((eq major-mode 'eww-mode)
- (org-eww-copy-for-org-mode))
- (t
- (error "Not valid -- must be in w3m or eww mode")))
-
- ;; Check for full path to the archive file. Create missing directories.
- (unless (file-exists-p article-file)
- (let ((dir (file-name-directory article-file)))
- (unless (file-exists-p dir)
- (make-directory dir))))
-
- ;; Move to end of file and insert blank line for org-capture to add timestamp, etc.
- (find-file article-file)
- (goto-char (point-max))
- (insert "\n\n\n\n\n")
-
- ;; Insert the web content keeping our place.
- (save-excursion (yank))
-
- ;; Remove page info from kill ring. Also, fix the yank pointer.
- (setq kill-ring (cdr kill-ring))
- (setq kill-ring-yank-pointer kill-ring)
-
- ;; Final repositioning.
- (forward-line -1))
+
+,@
+(\"w\" \"Website\" plain (function org-webpage-clipper)
+\"* %a\\nArticle Link: %L\\nCaptured On: %U\\n\\n\" :immediate-finish t)
+'@"
+ (interactive)
+
+ ;; Ensure valid major mode before encoding
+ (cond
+ ((eq major-mode 'w3m-mode)
+ (org-w3m-copy-for-org-mode))
+ ((eq major-mode 'eww-mode)
+ (org-eww-copy-for-org-mode))
+ (t
+ (error "Not valid -- must be in w3m or eww mode")))
+
+ ;; Check for full path to the archive file. Create missing directories.
+ (unless (file-exists-p article-file)
+ (let ((dir (file-name-directory article-file)))
+ (unless (file-exists-p dir)
+ (make-directory dir))))
+
+ ;; Move to end of file and insert blank line for org-capture to add timestamp, etc.
+ (find-file article-file)
+ (goto-char (point-max))
+ (insert "\n\n\n\n\n")
+
+ ;; Insert the web content keeping our place.
+ (save-excursion (yank))
+
+ ;; Remove page info from kill ring. Also, fix the yank pointer.
+ (setq kill-ring (cdr kill-ring))
+ (setq kill-ring-yank-pointer kill-ring)
+
+ ;; Final repositioning.
+ (forward-line -1))
;;;; --------------------------------- Functions -------------------------------
(defun org-capture-pdf-active-region ()
- "Capture the active region of the pdf-view buffer.
+ "Capture the active region of the pdf-view buffer.
Intended to be called within an org capture template."
- (let* ((pdf-buf-name (plist-get org-capture-plist :original-buffer))
- (pdf-buf (get-buffer pdf-buf-name)))
- (if (buffer-live-p pdf-buf)
- (with-current-buffer pdf-buf
- (car (pdf-view-active-region-text)))
- (user-error "Buffer %S not alive." pdf-buf-name))))
+ (let* ((pdf-buf-name (plist-get org-capture-plist :original-buffer))
+ (pdf-buf (get-buffer pdf-buf-name)))
+ (if (buffer-live-p pdf-buf)
+ (with-current-buffer pdf-buf
+ (car (pdf-view-active-region-text)))
+ (user-error "Buffer %S not alive" pdf-buf-name))))
;;;; --------------------------- Org-Capture Templates -------------------------
;; ORG-CAPTURE TEMPLATES
(setq org-protocol-default-template-key "L")
(setq org-capture-templates
- '(
- ("e" "Event" entry (file+headline schedule-file "Scheduled Events")
- "* %?\nWHEN: %^t" :prepend t)
+ '(
+ ("e" "Event" entry (file+headline schedule-file "Scheduled Events")
+ "* %?\nWHEN: %^t" :prepend t)
- ("E" "Epub Text" entry (file+headline inbox-file "Inbox")
- "* %?\n#+BEGIN_QUOTE\n %i\n#+END_QUOTE\nSource: [[%:link][%(buffer-name (org-capture-get :original-buffer))]]\nCaptured On: %U" :prepend t)
+ ("E" "Epub Text" entry (file+headline inbox-file "Inbox")
+ "* %?\n#+BEGIN_QUOTE\n %i\n#+END_QUOTE\nSource: [[%:link][%(buffer-name (org-capture-get :original-buffer))]]\nCaptured On: %U" :prepend t)
- ("P" "PDF Text" entry (file+headline inbox-file "Inbox")
- "* %?\n#+BEGIN_QUOTE\n %(org-capture-pdf-active-region)\n#+END_QUOTE\nSource:[[%L][%(buffer-name (org-capture-get :original-buffer))]]\nCaptured On: %U" :prepend t)
+ ("P" "PDF Text" entry (file+headline inbox-file "Inbox")
+ "* %?\n#+BEGIN_QUOTE\n %(org-capture-pdf-active-region)\n#+END_QUOTE\nSource:[[%L][%(buffer-name (org-capture-get :original-buffer))]]\nCaptured On: %U" :prepend t)
- ("p" "Link with Selection" entry (file+headline inbox-file "Inbox")
- "* TODO %?\n#+BEGIN_QUOTE\n%i\n#+END_QUOTE\n[[%:link][%:description]]\nCaptured On: %U" :prepend t)
+ ("p" "Link with Selection" entry (file+headline inbox-file "Inbox")
+ "* TODO %?\n#+BEGIN_QUOTE\n%i\n#+END_QUOTE\n[[%:link][%:description]]\nCaptured On: %U" :prepend t)
- ("L" "Link" entry (file+headline inbox-file "Inbox")
- "* TODO %?\n[[%:link][%:description]]\nCaptured On: %U" :prepend t)
+ ("L" "Link" entry (file+headline inbox-file "Inbox")
+ "* TODO %?\n[[%:link][%:description]]\nCaptured On: %U" :prepend t)
- ("m" "Mu4e Email" entry (file+headline inbox-file "Inbox")
- "* TODO %?\n[[%:link][%:description]]\nCaptured On: %U" :prepend t)
+ ("m" "Mu4e Email" entry (file+headline inbox-file "Inbox")
+ "* TODO %?%(if (string= \"%i\" \"\") \"\" \"\n#+BEGIN_QUOTE\n%i\n#+END_QUOTE\")\n[[%:link][%:description]]\nCaptured On: %U"
+ :prepend t)
- ("w" "Website" plain
- (function org-website-clipper)
- "* %a\nArticle Link: %L\nCaptured On: %U\n\n" :immediate-finish t)))
+ ("w" "Website" plain
+ (function org-webpage-clipper)
+ "* %a\nArticle Link: %L\nCaptured On: %U\n\n" :immediate-finish t)))
) ;; end with-eval-after-load 'org
diff --git a/modules/org-drill-config.el b/modules/org-drill-config.el
index f2120c33..127a94f7 100644
--- a/modules/org-drill-config.el
+++ b/modules/org-drill-config.el
@@ -14,6 +14,7 @@
;;; Code:
+(require 'custom-functions) ;; for cj/merge-list-to-list
(defvar org-drill-files (directory-files (concat sync-dir "drill/")
t directory-files-no-dot-files-regexp))
diff --git a/modules/org-roam-config.el b/modules/org-roam-config.el
index 1852cde5..c9a5bad1 100644
--- a/modules/org-roam-config.el
+++ b/modules/org-roam-config.el
@@ -94,7 +94,7 @@ ARGS represents the node name to link."
;; -------------------------- Org Roam Find Functions --------------------------
(defun cj/org-roam-find-node (tag template-key template-file)
- "List all node of type \\=`TAG\\=` in completing read for selection or creation."
+ "List all node of type \='TAG\=' in completing read for selection or creation."
(interactive)
;; Add the project file to the agenda after capture is finished
(add-hook 'org-capture-after-finalize-hook #'cj/org-roam-add-node-to-agenda-files-finalize-hook)
@@ -111,24 +111,24 @@ ARGS represents the node name to link."
:unnarrowed t))))
(defun cj/org-roam-find-topic ()
- "List all node of type \\=`topic\\=` in completing read for selection or creation."
+ "List all node of type \=`topic\=` in completing read for selection or creation."
(interactive)
(cj/org-roam-find-node "Topic" "t" "~/sync/org/roam/templates/topic.org"))
(defun cj/org-roam-find-recipe ()
- "List all node of type \\=`recipe\\=` in completing read for selection or creation."
+ "List all node of type \=`recipe\=` in completing read for selection or creation."
(interactive)
(cj/org-roam-find-node "Recipe" "r" "~/sync/org/roam/templates/recipe.org"))
(defun cj/org-roam-find-project ()
- "List all node of type \\='project\\=' in completing read for selection or creation."
+ "List all node of type \='project\=' in completing read for selection or creation."
(interactive)
(cj/org-roam-find-node "Project" "p" "~/sync/org/roam/templates/project.org"))
;; ---------------------- Org Capture After Finalize Hook ----------------------
(defun cj/org-roam-add-node-to-agenda-files-finalize-hook ()
- "Add the captured project file to \\='org-agenda-files\\='."
+ "Add the captured project file to \='org-agenda-files\='."
;; Remove the hook since it was added temporarily
(remove-hook 'org-capture-after-finalize-hook #'cj/org-roam-add-node-to-agenda-files-finalize-hook)
diff --git a/modules/prog-c.el b/modules/prog-c.el
index d3e29d44..3dd4eade 100644
--- a/modules/prog-c.el
+++ b/modules/prog-c.el
@@ -8,7 +8,7 @@
;;;; ------------------------------ C-Mode Settings ------------------------------
(defun cj/c-mode-settings ()
- "Settings for \\='c-mode\\='."
+ "Settings for \='c-mode\='."
(setq-default indent-tabs-mode nil) ;; spaces, not tabs
(setq-default c-basic-offset 4) ;; 4 spaces offset
(setq c-default-style "stroustrup") ;; k&r c, 2nd edition
diff --git a/modules/prog-comments.el b/modules/prog-comments.el
index 61d5e328..62193d6f 100644
--- a/modules/prog-comments.el
+++ b/modules/prog-comments.el
@@ -30,47 +30,46 @@
;; per major mode.
(defun cj/comment-centered (&optional comment-char)
- "Insert comment text centered around the 'COMMENT-CHAR' character.
-Will default to the '#' character if called with no arguments. Uses
-\\="fill-column"\\= or 80 (whichever is less) to calculate the comment length.
-Will begin and end the line with the appropriate comment symbols based on
-programming mode."
+ "Insert comment text centered around the COMMENT-CHAR character.
+Will default to the '#' character if called with no arguments. Uses the value of
+fill-column or 80 (whichever is less) to calculate the comment length. Will
+begin and end the line with the appropriate comment symbols based on programming mode."
(interactive)
(if (not (char-or-string-p comment-char))
- (setq comment-char "#"))
+ (setq comment-char "#"))
(let* ((comment (capitalize (string-trim (read-from-minibuffer "Comment: "))))
- (fill-column (min fill-column 80))
- (comment-length (length comment))
- (comment-start-length (length comment-start))
- (comment-end-length (length comment-end))
- (current-column-pos (current-column))
- (space-on-each-side (/ (- fill-column
- current-column-pos
- comment-length
- (length comment-start)
- (length comment-end)
- ;; Single space on each side of comment
- (if (> comment-length 0) 2 0)
- ;; Single space after comment syntax sting
- 1)
- 2)))
+ (fill-column (min fill-column 80))
+ (comment-length (length comment))
+ (comment-start-length (length comment-start))
+ (comment-end-length (length comment-end))
+ (current-column-pos (current-column))
+ (space-on-each-side (/ (- fill-column
+ current-column-pos
+ comment-length
+ (length comment-start)
+ (length comment-end)
+ ;; Single space on each side of comment
+ (if (> comment-length 0) 2 0)
+ ;; Single space after comment syntax sting
+ 1)
+ 2)))
(if (< space-on-each-side 2)
- (message "Comment string is too big to fit in one line")
- (progn
- (insert comment-start)
- (when (equal comment-start ";") ; emacs-lisp line comments are ;;
- (insert comment-start)) ; so insert comment-char again
- (insert " ")
- (dotimes (_ space-on-each-side) (insert comment-char))
- (when (> comment-length 0) (insert " "))
- (insert comment)
- (when (> comment-length 0) (insert " "))
- (dotimes (_ (if (= (% comment-length 2) 0)
- (- space-on-each-side 1)
- space-on-each-side))
- (insert comment-char))
- (insert " ")
- (insert comment-end)))))
+ (message "Comment string is too big to fit in one line")
+ (progn
+ (insert comment-start)
+ (when (equal comment-start ";") ; emacs-lisp line comments are ;;
+ (insert comment-start)) ; so insert comment-char again
+ (insert " ")
+ (dotimes (_ space-on-each-side) (insert comment-char))
+ (when (> comment-length 0) (insert " "))
+ (insert comment)
+ (when (> comment-length 0) (insert " "))
+ (dotimes (_ (if (= (% comment-length 2) 0)
+ (- space-on-each-side 1)
+ space-on-each-side))
+ (insert comment-char))
+ (insert " ")
+ (insert comment-end)))))
(global-set-key (kbd "C-z c l") 'cj/comment-line)
;; ------------------------------- Comment Hyphen ------------------------------
diff --git a/modules/prog-general.el b/modules/prog-general.el
index b374daf3..1f1b8e4e 100644
--- a/modules/prog-general.el
+++ b/modules/prog-general.el
@@ -49,19 +49,16 @@
("<backtab>" . bicycle-cycle-global)))
;; --------------------------- Project Switch Actions --------------------------
-;; if there's a todo or readme file in the project, display it when switching
+;; when switching projects, display the todo file if it exists, or display
+;; magit-status if it doesn't.
(defun cj/project-switch-actions ()
"Opens TODO or README file on projectile switch project.
If none exists, it opens magit-status."
- ;; (dired-sidebar-hide-sidebar)
- ;; (dired-sidebar-show-sidebar)
- (let ((todo-file
- (cond
- ((file-exists-p (concat (projectile-project-root) "TODO.org")) "TODO.org")
- ((file-exists-p (concat (projectile-project-root) "todo.org")) "todo.org")
- ((file-exists-p (concat (projectile-project-root) "TODO.md")) "TODO.md")
- ((file-exists-p (concat (projectile-project-root) "TODO.txt")) "TODO.txt"))))
+ (let* ((files (directory-files (projectile-project-root)))
+ (todo-file (seq-find (lambda (file)
+ (string-match-p "todo\\.\\(org\\|md\\|txt\\)\\'"
+ (downcase file))) files)))
(if todo-file
(find-file (concat (projectile-project-root) todo-file))
(magit-status))))
@@ -69,16 +66,11 @@ If none exists, it opens magit-status."
;; --------------------------------- Projectile --------------------------------
;; project support
-;; notify user when scanning for projects
-(defun cj/projectile-identify-projects ()
- (message "No project cache found. Identifying projects....")
- (projectile-discover-projects-in-search-path))
-
;; only run discover projects when there's no bookmarks file
(defun cj/projectile-schedule-project-discovery ()
- (let ((bookmark-file (concat user-emacs-directory "/projectile-bookmarks.eld")))
- (unless (file-exists-p bookmark-file)
- (run-at-time "3" nil 'cj/projectile-identify-projects))))
+ (let ((projectile-bookmark-file (concat user-emacs-directory "/projectile-bookmarks.eld")))
+ (unless (file-exists-p projectile-bookmark-file)
+ (run-at-time "3" nil 'projectile-discover-projects-in-search-path))))
(use-package projectile
:defer .5
@@ -92,7 +84,9 @@ If none exists, it opens magit-status."
(projectile-project-search-path '("~/code"
"~/projects"))
:config
+ ;; scan for projects if none are defined
(cj/projectile-schedule-project-discovery)
+
;; don't reuse comp buffers between projects
(setq projectile-per-project-compilation-buffer t)
(projectile-mode)
@@ -120,7 +114,15 @@ If none exists, it opens magit-status."
:after projectile
:bind
(:map projectile-command-map
- ("G" . projectile-ripgrep)))
+ ("G" . projectile-ripgrep))
+ :config
+
+ ;; when running ripgrep searches, end with the results window selected
+ (defun switch-to-ripgrep-results (&rest _)
+ "Switch to *ripgrep-search* buffer in other window."
+ (pop-to-buffer "*ripgrep-search*"))
+
+ (advice-add 'ripgrep-regexp :after #'switch-to-ripgrep-results))
;; ---------------------------------- Snippets ---------------------------------
;; reusable code and text.
@@ -174,7 +176,7 @@ If none exists, it opens magit-status."
("WIP" . "#1E90FF"))))
;; --------------------------- Whitespace Management ---------------------------
-;; when saving your file, trims unneeded whitespace only from lines you've modified
+;; trims trailing whitespace only from lines you've modified when saving buffer
(use-package ws-butler
:defer .5
@@ -187,7 +189,7 @@ If none exists, it opens magit-status."
(setq ws-butler-convert-leading-tabs-or-spaces t))
;; ----------------- Auto-Close Successful Compilation Windows -----------------
-;; from 'enberg' on #emacs
+;; close compilation windows when successful. from 'enberg' on #emacs
(add-hook 'compilation-finish-functions
(lambda (buf str)
diff --git a/modules/prog-go.el b/modules/prog-go.el
index 617fceaa..70e1f832 100644
--- a/modules/prog-go.el
+++ b/modules/prog-go.el
@@ -5,6 +5,8 @@
;;; Code:
+;; ---------------------------------- Go Setup ---------------------------------
+;; golang preferences
(defun cj/go-setup ()
"My default code preferences for Golang."
@@ -20,7 +22,8 @@
(electric-pair-mode t)) ;; match delimiters automatically
(add-hook 'go-mode-hook 'cj/go-setup)
-;;;; ---------------------------- Go Mode ----------------------------
+;; ---------------------------------- Go Mode ----------------------------------
+;; go mode configuration
(use-package go-mode
:bind (:map go-mode-map
@@ -34,52 +37,5 @@
;; go install golang.org/x/tools/cmd/goimports@latest
(setq gofmt-command "goimports"))
-;; (use-package go-mode
-;; :config
-;; (general-define-key
-;; :keymaps 'go-mode-map
-;; :states '(normal)
-;; "K" #'godoc-at-point
-;; "C-]" #'godef-jump)
-
-;; (general-define-key
-;; :keymaps 'go-mode-map
-;; :states '(normal)
-;; :prefix mpereira/leader
-;; "tt" #'go-test-current-test
-;; "tT" #'go-test-current-file
-;; "pt" #'go-test-current-project))
-
-;; ------------- Configure Emacs To Find Go Project Root -------------
-
-;; Note: This appears to interfere with tramp. Before re-enabling, this
-;; should have a toggle and turned off when working in tramp.
-
-;; (require 'project)
-
-;; (defun project-find-go-module (dir)
-;; (when-let ((root (locate-dominating-file dir "go.mod")))
-;; (cons 'go-module root)))
-
-;; (cl-defmethod project-root ((project (head go-module)))
-;; (cdr project))
-
-;; (add-hook 'project-find-functions #'project-find-go-module)
-
-;; -------------------- Enable Eglot Integrations --------------------
-
-;; The depth of -10 places this before eglot's willSave notification,
-;; so that that notification reports the actual contents that will be saved.
-;; (defun eglot-format-buffer-on-save ()
-;; (add-hook 'before-save-hook #'eglot-format-buffer -10 t))
-;; (add-hook 'go-mode-hook #'eglot-format-buffer-on-save)
-
-;; -------------------- Configure Gopls Via Eglot --------------------
-
-;; (setq-default eglot-workspace-configuration
-;; '((:gopls .
-;; ((staticcheck . t)
-;; (matcher . "CaseSensitive")))))
-
(provide 'prog-go)
;;; prog-go.el ends here
diff --git a/modules/prog-python.el b/modules/prog-python.el
index 5dc06bf6..e85ae548 100644
--- a/modules/prog-python.el
+++ b/modules/prog-python.el
@@ -5,46 +5,52 @@
;;; Code:
-;; ------------------------- General Settings ------------------------
-
-(add-hook 'python-mode-hook (lambda () (setq indent-tabs-mode nil))) ;; use spaces, not tabs
+;; -------------------------------- Python Setup -------------------------------
+;; preferences for Python programming
+
+(defun cj/python-setup ()
+ "My default code preferences for Python coding."
+ (tree-sitter-hl-mode) ;; use tree-sitter's highlighting
+ (hs-minor-mode) ;; folding
+ (company-mode) ;; completion framework
+ (flyspell-prog-mode) ;; spell check comments
+ (superword-mode) ;; see-this-as-one-word
+ (setq-default fill-column 80) ;; wrap at 80 columns
+ (setq-default tab-width 4) ;; set the tab width to 4 spaces
+ (setq-default standard-indent 4) ;; indent 4 spaces
+ (setq-default indent-tabs-mode nil) ;; disable tab characters
+ (electric-pair-mode t)) ;; match delimiters automatically
;; ----------------------------------- Python ----------------------------------
-;; remove the guess indent python message
+;; configuration for Emacs' built-in Python editing support
(use-package python
- :config
- (setq python-indent-guess-indent-offset-verbose nil))
-
-;; --------------------------- Python Mode ---------------------------
-
-(use-package python-mode
:ensure nil ;; built-in
:hook
- ((python-mode . flyspell-prog-mode)
- (python-mode . superword-mode)
- (python-mode . company-mode)
- (python-mode . electric-pair-mode)) ;; auto-complete braces and pairs
+ (python-mode . cj/python-setup)
:custom
(python-shell-interpreter "python3")
- (setq python-indent-offset 4)) ;; 4 spaces default indent
+ :config
+ ;; remove the "guess indent" python message
+ (setq python-indent-guess-indent-offset-verbose nil))
;; ----------------------------------- Poetry ----------------------------------
;; virtual environments and dependencies
-;; (use-package poetry
-;; :defer t
-;; :config
-;; ;; Checks for the correct virtualenv. Better strategy IMO because the default
-;; ;; one is quite slow.
-;; (setq poetry-tracking-strategy 'switch-buffer)
-;; :hook (python-mode . poetry-tracking-mode))
+(use-package poetry
+ :defer t
+ :after (python)
+ :hook (python-mode . poetry-tracking-mode)
+ :config
+ ;; Checks for the correct virtualenv. Better strategy IMO because the default
+ ;; one is quite slow.
+ (setq poetry-tracking-strategy 'switch-buffer))
;; ---------------------------------- Blacken ----------------------------------
;; formatting on save
(use-package blacken
- :defer t
+ :defer 1
:custom
(blacken-allow-py36 t)
(blacken-skip-string-normalization t)
@@ -54,20 +60,21 @@
;; automatically insert NumPy style docstrings in Python function definitions
(use-package numpydoc
- :defer t
+ :defer 1
:custom
(numpydoc-insert-examples-block nil)
(numpydoc-template-long nil)
:bind (:map python-mode-map
("C-c C-n" . numpydoc-generate)))
-;; ------------------------------------ Toml -----------------------------------
+;; ------------------------------------ TOML -----------------------------------
+;; editing support and documentation for TOML files
(use-package toml-mode
- :defer .5)
+ :defer 1)
(use-package eldoc-toml
- :defer .5)
+ :defer 1)
(provide 'prog-python)
diff --git a/modules/show-kill-ring.el b/modules/show-kill-ring.el
index fdc400ee..e6405c6d 100644
--- a/modules/show-kill-ring.el
+++ b/modules/show-kill-ring.el
@@ -1,21 +1,24 @@
;;; show-kill-ring --- Displays Previous Kill Ring Entries -*- lexical-binding: t; -*-;; Show Kill Ring
;; Stolen from Steve Yegge when he wasn't looking
-
;;; Commentary:
;; Browse items you've previously killed.
-
;;; Code:
(require 'cl-lib)
(defvar show-kill-max-item-size 1000
- "This represents the size of a \\='kill ring\\=' entry.
-A positive number means to limit the display of \\='kill-ring\\=' items to
+ "This represents the size of a \='kill ring\=' entry.
+A positive number means to limit the display of \='kill-ring\=' items to
that number of characters.")
+(defun show-kill-ring-exit ()
+ "Exit the show-kill-ring buffer."
+ (interactive)
+ (quit-window t))
+
(defun show-kill-ring ()
"Show the current contents of the kill ring in a separate buffer.
This makes it easy to figure out which prefix to pass to yank."
@@ -39,7 +42,7 @@ This makes it easy to figure out which prefix to pass to yank."
;; show each of the items in the kill ring, in order
(while temp
;; insert our little divider
- (insert (concat "\n" bar item (prin1-to-string count) " "
+ (insert (concat "\n" bar item (prin1-to-string count) " "
(if (< count 10) bar2 bar) "\n"))
;; if this is the yank pointer target, grab it
@@ -52,12 +55,16 @@ This makes it easy to figure out which prefix to pass to yank."
(setq temp (cdr temp)))
;; show info about yank item
- (show-kill-insert-footer yptr ynum)
+ (show-kill-insert-footer yptr ynum)
+
+ (use-local-map (make-sparse-keymap))
+ (local-set-key "q" 'show-kill-ring-exit)
;; show it
- (goto-char (point-min))
- (set-buffer-modified-p nil)
- (display-buffer buf)))
+ (goto-char (point-min))
+ (setq buffer-read-only t)
+ (set-buffer-modified-p nil)
+ (pop-to-buffer buf)))
(defun show-kill-insert-item (item)
"Insert an ITEM from the kill ring into the current buffer.
diff --git a/modules/system-utils.el b/modules/system-utils.el
index bab4f01a..f5967520 100644
--- a/modules/system-utils.el
+++ b/modules/system-utils.el
@@ -18,27 +18,61 @@
(setq nerd-icons-ibuffer-color-icon t)
(setq nerd-icons-ibuffer-human-readable-size t))
-;; ------------------------------ Bury Alive List ------------------------------
-;; buries buffers on the 'cj/bury-alive-list' list rather than killing them. The
-;; keybinding for kill-buffer is remapped to this function.
-
-(defvar cj/bury-alive-list '("*dashboard*" "*scratch*" "*Messages*")
+;; ------------------------ Killing Buffers And Windows ------------------------
+;; Accidentally killing buffers can lose data. these functions override common
+;; buffer killing functions and buries buffers on the 'cj/buffer-bury-alive-list' list
+;; rather than killing them. Allows for interactive adding to the
+;; 'cj/buffer-bury-alive-list' via 'C-u C-x k'
+
+;; BUFFER BURY ALIVE LIST
+(defvar cj/buffer-bury-alive-list '("*dashboard*" "*scratch*" "*Messages*")
"Buffers that shouldn't be killed, but buried instead.")
-(defun cj/kill-or-bury-alive (target-buffer)
+;; KILL BUFFER AND WINDOW
+(defun cj/kill-buffer-and-window ()
+ "Kill current buffer and window.
+Buries buffers instead if they are on the cj/buffer-bury-alive-list."
+ (interactive)
+ (let ((target-buffer (current-buffer)))
+ (delete-window)
+ (cj/kill-buffer-or-bury-alive target-buffer)))
+(global-set-key (kbd "M-C") 'cj/kill-buffer-and-window)
+
+;; KILL OTHER WINDOW
+(defun cj/kill-other-window ()
+ "Close the next window and kill any buffer in it.
+Buries buffers instead if they are on the cj/buffer-bury-alive-list."
+ (interactive)
+ (other-window 1)
+ (let ((target-buffer (current-buffer)))
+ (if (not (one-window-p)) (delete-window))
+ (cj/kill-buffer-or-bury-alive target-buffer)))
+(global-set-key (kbd "M-O") 'cj/kill-other-window)
+
+;; KILL ALL OTHER BUFFERS AND WINDOWS
+(defun cj/kill-all-other-buffers-and-windows ()
+ "Save buffers, then kill all other buffers and windows.
+Buries buffers instead if they are on the cj/buffer-bury-alive-list."
+ (interactive)
+ (save-some-buffers)
+ (delete-other-windows)
+ (mapc 'cj/kill-buffer-or-bury-alive (delq (current-buffer) (buffer-list))))
+(global-set-key (kbd "M-M") 'cj/kill-all-other-buffers-and-windows)
+
+;; KILL BUFFER OR BURY ALIVE
+(defun cj/kill-buffer-or-bury-alive (target-buffer)
"Bury buffers on the bury-instead-list rather than killing them.
-With a prefix argument, add the TARGET-BUFFER to \='cj/bury-alive-list\='."
+With a prefix argument, add the TARGET-BUFFER to \='cj/buffer-bury-alive-list\='."
(interactive "bKill or Add to bury (don't kill) buffer list: ")
(with-current-buffer target-buffer
(if current-prefix-arg
(progn
- (add-to-list 'cj/bury-alive-list (buffer-name (current-buffer)))
+ (add-to-list 'cj/buffer-bury-alive-list (buffer-name (current-buffer)))
(message "Added %s to bury-alive-list" (buffer-name (current-buffer))))
- (if (member (buffer-name (current-buffer)) cj/bury-alive-list)
+ (if (member (buffer-name (current-buffer)) cj/buffer-bury-alive-list)
(bury-buffer)
(kill-buffer (current-buffer))))))
-
-(global-set-key [remap kill-buffer] #'cj/kill-or-bury-alive)
+(global-set-key [remap kill-buffer] #'cj/kill-buffer-or-bury-alive)
;; --------------------------- Emacs Server Shutdown ---------------------------
;; shuts down the Emacs server. useful with emacsclient.
@@ -243,14 +277,16 @@ The function offers the option to open the `macros-file' for editing when called
(write-region ";;; -*- lexical-binding: t -*-\n" nil macros-file)
(message "Saved macros file not found, so created: %s" macros-file)))
-;; ----------------------------- Merge List To List ----------------------------
-;; Convenience method for merging two lists together
-;; https://emacs.stackexchange.com/questions/38008/adding-many-items-to-a-list/68048#68048
+;; -------------------------------- Abbrev Mode --------------------------------
+;; word abbreviations mode. used to auto-correct spelling (see flyspell-config)
-(defun cj/merge-list-to-list (dst src)
- "Merge content of the 2nd list SRC with the 1st one DST."
- (set dst
- (append (eval dst) src)))
+(use-package abbrev-mode
+ :ensure nil ;; built-in
+ :defer .5
+ :custom
+ (abbrev-file-name (concat user-emacs-directory "assets/abbrev_defs")) ;; keep project root clean
+ :config
+ (abbrev-mode)) ;; use abbrev mode everywhere
;; -------------------------------- Log Silently -------------------------------
;; utility function to log silently to the Messages buffer (for debugging/warning)
diff --git a/modules/test-code.el b/modules/test-code.el
index 6c586f03..74179c95 100644
--- a/modules/test-code.el
+++ b/modules/test-code.el
@@ -118,25 +118,7 @@ otherwise use the default location in `cj/recording-location'."
:after xterm-color
:load-path ("~/code/emacs-wttrin")
:bind
- ("C-c w" . wttrin)
- :custom
- (wttrin-unit-system "u")
- (wttrin-default-cities '(
- "Albuquerque, New Mexico"
- "Berkeley, CA"
- "Boston, Massachussetts"
- "Chicago, Illinois"
- "Huntington Beach, CA"
- "Littlestown, PA"
- "London, UK"
- "New Orleans, LA"
- "New York, New York"
- "Oakland, California"
- "Paris, FR"
- "San Francisco, California"
- "Santa Fe, New Mexico"
- "Yerevan, AM"
- )))
+ ("M-W" . wttrin))
;; dependency for wttrin
(use-package xterm-color
diff --git a/modules/text-config.el b/modules/text-config.el
index 2924521d..221ca71b 100644
--- a/modules/text-config.el
+++ b/modules/text-config.el
@@ -8,7 +8,7 @@
;; ------------------------------- Text Settings -------------------------------
(defun cj/text-mode-settings ()
- "Personal settings for \\='text-mode\\='."
+ "Personal settings for \='text-mode\='."
(turn-on-visual-line-mode) ;; wrap text in text modes (additional modes set elsewhere)
(setq-default indent-tabs-mode nil) ;; indentation should not insert tabs
(setq sentence-end-double-space nil)) ;; in the 21st century, sentences may end w/ a single space
diff --git a/modules/ui-navigation.el b/modules/ui-navigation.el
index 44e5ae5d..e9f3cdc5 100644
--- a/modules/ui-navigation.el
+++ b/modules/ui-navigation.el
@@ -95,31 +95,6 @@ This function won't work with more than one split window."
;; SWAP WINDOW POSITIONS
(global-set-key (kbd "M-S") 'window-swap-states)
-;; ------------------------------ Killing Windows ------------------------------
-
-;; KILL THIS WINDOW
-(global-set-key (kbd "M-C") 'kill-buffer-and-window)
-
-;; KILL OTHER WINDOW
-(defun cj/kill-other-window ()
- "Close the next window and kill any buffer in it."
- (interactive)
- (other-window 1)
- (kill-this-buffer)
- (if (not (one-window-p))
- (delete-window)))
-(global-set-key (kbd "M-O") 'cj/kill-other-window)
-
-
-;; KILL-ALL-OTHER-BUFFERS
-(defun cj/kill-all-other-buffers-and-windows ()
- "Save buffers, then kill all other buffers and windows."
- (interactive)
- (save-some-buffers)
- (delete-other-windows)
- (mapc 'kill-buffer (delq (current-buffer) (buffer-list))))
-(global-set-key (kbd "M-M") 'cj/kill-all-other-buffers-and-windows)
-
;; ---------------------------- Buffer Manipulation ----------------------------
;; MOVE BUFFER