diff options
142 files changed, 423 insertions, 402 deletions
@@ -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 @@ -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 Binary files differindex 7a217dc5..8d66ed01 100644 --- a/localrepo/a-20210929.1510.tar +++ b/localrepo/a-20210929.1510.tar diff --git a/localrepo/aio-20200610.1904.tar b/localrepo/aio-20200610.1904.tar Binary files differindex 808b935c..aafa76bb 100644 --- a/localrepo/aio-20200610.1904.tar +++ b/localrepo/aio-20200610.1904.tar diff --git a/localrepo/all-the-icons-20240108.559.tar b/localrepo/all-the-icons-20240108.559.tar Binary files differindex 05e7e9cc..b6286073 100644 --- a/localrepo/all-the-icons-20240108.559.tar +++ b/localrepo/all-the-icons-20240108.559.tar diff --git a/localrepo/all-the-icons-ivy-20190508.1803.tar b/localrepo/all-the-icons-ivy-20190508.1803.tar Binary files differindex e9f3b8db..b1a03c3a 100644 --- a/localrepo/all-the-icons-ivy-20190508.1803.tar +++ b/localrepo/all-the-icons-ivy-20190508.1803.tar 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 Binary files differindex c16e3eee..d251f9ac 100644 --- a/localrepo/async-1.9.8.tar +++ b/localrepo/async-1.9.8.tar diff --git a/localrepo/blacken-20231129.654.tar b/localrepo/blacken-20231129.654.tar Binary files differindex 7d8d6e3d..41346c0a 100644 --- a/localrepo/blacken-20231129.654.tar +++ b/localrepo/blacken-20231129.654.tar diff --git a/localrepo/calibredb-20240331.409.tar b/localrepo/calibredb-20240331.409.tar Binary files differindex 5b25087b..9ec0895d 100644 --- a/localrepo/calibredb-20240331.409.tar +++ b/localrepo/calibredb-20240331.409.tar diff --git a/localrepo/change-inner-20231203.1021.tar b/localrepo/change-inner-20231203.1021.tar Binary files differindex 63a209b1..53e0ca6c 100644 --- a/localrepo/change-inner-20231203.1021.tar +++ b/localrepo/change-inner-20231203.1021.tar diff --git a/localrepo/chess-2.0.5.tar b/localrepo/chess-2.0.5.tar Binary files differindex 8a477760..570b29f5 100644 --- a/localrepo/chess-2.0.5.tar +++ b/localrepo/chess-2.0.5.tar diff --git a/localrepo/company-0.10.2.tar b/localrepo/company-0.10.2.tar Binary files differindex a719dfd0..4d3844f3 100644 --- a/localrepo/company-0.10.2.tar +++ b/localrepo/company-0.10.2.tar diff --git a/localrepo/compat-29.1.4.5.tar b/localrepo/compat-29.1.4.5.tar Binary files differdeleted file mode 100644 index 7a5fc787..00000000 --- a/localrepo/compat-29.1.4.5.tar +++ /dev/null diff --git a/localrepo/counsel-0.14.2.tar b/localrepo/counsel-0.14.2.tar Binary files differindex 5714cae4..429b5166 100644 --- a/localrepo/counsel-0.14.2.tar +++ b/localrepo/counsel-0.14.2.tar diff --git a/localrepo/css-eldoc-20220415.1629.tar b/localrepo/css-eldoc-20220415.1629.tar Binary files differindex 4d696fda..5dd2a869 100644 --- a/localrepo/css-eldoc-20220415.1629.tar +++ b/localrepo/css-eldoc-20220415.1629.tar diff --git a/localrepo/dashboard-20240327.29.tar b/localrepo/dashboard-20240327.29.tar Binary files differindex 0a4f36fd..62b2f527 100644 --- a/localrepo/dashboard-20240327.29.tar +++ b/localrepo/dashboard-20240327.29.tar diff --git a/localrepo/devdocs-0.6.1.tar b/localrepo/devdocs-0.6.1.tar Binary files differindex bf56b67e..fdfe4174 100644 --- a/localrepo/devdocs-0.6.1.tar +++ b/localrepo/devdocs-0.6.1.tar diff --git a/localrepo/dired-hacks-utils-20230512.1107.tar b/localrepo/dired-hacks-utils-20230512.1107.tar Binary files differindex ff669625..e53c0063 100644 --- a/localrepo/dired-hacks-utils-20230512.1107.tar +++ b/localrepo/dired-hacks-utils-20230512.1107.tar diff --git a/localrepo/dirvish-20230519.1500.tar b/localrepo/dirvish-20230519.1500.tar Binary files differindex 67b00264..9b2c4ee3 100644 --- a/localrepo/dirvish-20230519.1500.tar +++ b/localrepo/dirvish-20230519.1500.tar diff --git a/localrepo/easy-hugo-20240129.1534.tar b/localrepo/easy-hugo-20240129.1534.tar Binary files differindex 62129295..6e9c9e5b 100644 --- a/localrepo/easy-hugo-20240129.1534.tar +++ b/localrepo/easy-hugo-20240129.1534.tar diff --git a/localrepo/ef-themes-1.6.1.tar b/localrepo/ef-themes-1.6.1.tar Binary files differindex 314f7f51..53b4a4a1 100644 --- a/localrepo/ef-themes-1.6.1.tar +++ b/localrepo/ef-themes-1.6.1.tar diff --git a/localrepo/elfeed-20240331.1348.tar b/localrepo/elfeed-20240331.1348.tar Binary files differindex b369e753..a03a07d9 100644 --- a/localrepo/elfeed-20240331.1348.tar +++ b/localrepo/elfeed-20240331.1348.tar diff --git a/localrepo/elfeed-dashboard-20210727.603.tar b/localrepo/elfeed-dashboard-20210727.603.tar Binary files differindex 20cb7522..693c0ff0 100644 --- a/localrepo/elfeed-dashboard-20210727.603.tar +++ b/localrepo/elfeed-dashboard-20210727.603.tar diff --git a/localrepo/emacsql-20240124.1601.tar b/localrepo/emacsql-20240124.1601.tar Binary files differindex 220f0bd5..f54dde20 100644 --- a/localrepo/emacsql-20240124.1601.tar +++ b/localrepo/emacsql-20240124.1601.tar diff --git a/localrepo/emojify-20210108.1111.tar b/localrepo/emojify-20210108.1111.tar Binary files differindex 995fd1a0..8826c909 100644 --- a/localrepo/emojify-20210108.1111.tar +++ b/localrepo/emojify-20210108.1111.tar diff --git a/localrepo/eradio-20210327.1000.tar b/localrepo/eradio-20210327.1000.tar Binary files differindex 4fab8751..64a05ad8 100644 --- a/localrepo/eradio-20210327.1000.tar +++ b/localrepo/eradio-20210327.1000.tar diff --git a/localrepo/erc-image-20210604.753.tar b/localrepo/erc-image-20210604.753.tar Binary files differindex cbc16946..da89b8c9 100644 --- a/localrepo/erc-image-20210604.753.tar +++ b/localrepo/erc-image-20210604.753.tar diff --git a/localrepo/esxml-20230308.2254.tar b/localrepo/esxml-20230308.2254.tar Binary files differindex 10cf835f..12ab6306 100644 --- a/localrepo/esxml-20230308.2254.tar +++ b/localrepo/esxml-20230308.2254.tar diff --git a/localrepo/exec-path-from-shell-2.1.tar b/localrepo/exec-path-from-shell-2.1.tar Binary files differindex d481c68d..ed3c63e0 100644 --- a/localrepo/exec-path-from-shell-2.1.tar +++ b/localrepo/exec-path-from-shell-2.1.tar diff --git a/localrepo/expand-region-1.0.0.tar b/localrepo/expand-region-1.0.0.tar Binary files differindex a86b7e1d..0fd0857f 100644 --- a/localrepo/expand-region-1.0.0.tar +++ b/localrepo/expand-region-1.0.0.tar diff --git a/localrepo/f-20240308.906.tar b/localrepo/f-20240308.906.tar Binary files differindex 38e41a87..581b091a 100644 --- a/localrepo/f-20240308.906.tar +++ b/localrepo/f-20240308.906.tar diff --git a/localrepo/feebleline-20190822.1401.tar b/localrepo/feebleline-20190822.1401.tar Binary files differindex a8b83f63..89cb83f3 100644 --- a/localrepo/feebleline-20190822.1401.tar +++ b/localrepo/feebleline-20190822.1401.tar diff --git a/localrepo/flycheck-34.1.tar b/localrepo/flycheck-34.1.tar Binary files differindex fd03fde6..90b81328 100644 --- a/localrepo/flycheck-34.1.tar +++ b/localrepo/flycheck-34.1.tar diff --git a/localrepo/flycheck-package-20210509.2325.tar b/localrepo/flycheck-package-20210509.2325.tar Binary files differindex 8bfa1f18..c66e0370 100644 --- a/localrepo/flycheck-package-20210509.2325.tar +++ b/localrepo/flycheck-package-20210509.2325.tar diff --git a/localrepo/flycheck-projectile-20201031.1952.tar b/localrepo/flycheck-projectile-20201031.1952.tar Binary files differindex 145b68f2..434b3838 100644 --- a/localrepo/flycheck-projectile-20201031.1952.tar +++ b/localrepo/flycheck-projectile-20201031.1952.tar diff --git a/localrepo/fontaine-1.0.0.tar b/localrepo/fontaine-1.0.0.tar Binary files differindex b7125cb2..e79176a3 100644 --- a/localrepo/fontaine-1.0.0.tar +++ b/localrepo/fontaine-1.0.0.tar diff --git a/localrepo/forge-20240405.1509.tar b/localrepo/forge-20240405.1509.tar Binary files differindex 3ba4388a..ebf23ad1 100644 --- a/localrepo/forge-20240405.1509.tar +++ b/localrepo/forge-20240405.1509.tar diff --git a/localrepo/free-keys-1.0.tar b/localrepo/free-keys-1.0.tar Binary files differindex 758e79ab..5a5e67f5 100644 --- a/localrepo/free-keys-1.0.tar +++ b/localrepo/free-keys-1.0.tar diff --git a/localrepo/ghub-20240311.1716.tar b/localrepo/ghub-20240311.1716.tar Binary files differindex bfcf7bfe..3bd3e32e 100644 --- a/localrepo/ghub-20240311.1716.tar +++ b/localrepo/ghub-20240311.1716.tar diff --git a/localrepo/github-dark-vscode-theme-20231011.2034.tar b/localrepo/github-dark-vscode-theme-20231011.2034.tar Binary files differindex 5521ad82..21d2b534 100644 --- a/localrepo/github-dark-vscode-theme-20231011.2034.tar +++ b/localrepo/github-dark-vscode-theme-20231011.2034.tar diff --git a/localrepo/go-mode-1.6.0.tar b/localrepo/go-mode-1.6.0.tar Binary files differindex 42e2c90a..57cc7cae 100644 --- a/localrepo/go-mode-1.6.0.tar +++ b/localrepo/go-mode-1.6.0.tar diff --git a/localrepo/gptel-20240404.813.tar b/localrepo/gptel-20240404.813.tar Binary files differindex c9bf1b05..4fd7f9fd 100644 --- a/localrepo/gptel-20240404.813.tar +++ b/localrepo/gptel-20240404.813.tar diff --git a/localrepo/graphql-0.1.2.tar b/localrepo/graphql-0.1.2.tar Binary files differindex 8d3584e9..083784ef 100644 --- a/localrepo/graphql-0.1.2.tar +++ b/localrepo/graphql-0.1.2.tar diff --git a/localrepo/helpful-20231028.516.tar b/localrepo/helpful-20231028.516.tar Binary files differindex 10cb6d23..1191a166 100644 --- a/localrepo/helpful-20231028.516.tar +++ b/localrepo/helpful-20231028.516.tar diff --git a/localrepo/hl-todo-20240329.1503.tar b/localrepo/hl-todo-20240329.1503.tar Binary files differindex b965b88d..9e34d26d 100644 --- a/localrepo/hl-todo-20240329.1503.tar +++ b/localrepo/hl-todo-20240329.1503.tar diff --git a/localrepo/htmlize-1.56.tar b/localrepo/htmlize-1.56.tar Binary files differindex b867a7c4..01bbaf98 100644 --- a/localrepo/htmlize-1.56.tar +++ b/localrepo/htmlize-1.56.tar diff --git a/localrepo/hydra-0.15.0.tar b/localrepo/hydra-0.15.0.tar Binary files differindex 88a5a88b..e5ccfaab 100644 --- a/localrepo/hydra-0.15.0.tar +++ b/localrepo/hydra-0.15.0.tar diff --git a/localrepo/impatient-mode-20230511.1746.tar b/localrepo/impatient-mode-20230511.1746.tar Binary files differindex 545e3993..bb9f928e 100644 --- a/localrepo/impatient-mode-20230511.1746.tar +++ b/localrepo/impatient-mode-20230511.1746.tar diff --git a/localrepo/iter2-20221104.1938.tar b/localrepo/iter2-20221104.1938.tar Binary files differindex a543baa7..f75051ea 100644 --- a/localrepo/iter2-20221104.1938.tar +++ b/localrepo/iter2-20221104.1938.tar diff --git a/localrepo/ivy-0.14.2.tar b/localrepo/ivy-0.14.2.tar Binary files differindex f970c322..c1fee305 100644 --- a/localrepo/ivy-0.14.2.tar +++ b/localrepo/ivy-0.14.2.tar diff --git a/localrepo/ivy-rich-20230425.1422.tar b/localrepo/ivy-rich-20230425.1422.tar Binary files differindex 1d02e1bf..a0129b49 100644 --- a/localrepo/ivy-rich-20230425.1422.tar +++ b/localrepo/ivy-rich-20230425.1422.tar diff --git a/localrepo/js2-mode-20231224.tar b/localrepo/js2-mode-20231224.tar Binary files differindex 274d4c8d..a09e411f 100644 --- a/localrepo/js2-mode-20231224.tar +++ b/localrepo/js2-mode-20231224.tar diff --git a/localrepo/kv-20140108.1534.tar b/localrepo/kv-20140108.1534.tar Binary files differindex a600eed4..fc81b345 100644 --- a/localrepo/kv-20140108.1534.tar +++ b/localrepo/kv-20140108.1534.tar diff --git a/localrepo/ledger-mode-20240326.2002.tar b/localrepo/ledger-mode-20240326.2002.tar Binary files differindex 55e5cd5e..2c4e776c 100644 --- a/localrepo/ledger-mode-20240326.2002.tar +++ b/localrepo/ledger-mode-20240326.2002.tar diff --git a/localrepo/ligature-20220808.1225.tar b/localrepo/ligature-20220808.1225.tar Binary files differindex 3ebb682d..9376ae50 100644 --- a/localrepo/ligature-20220808.1225.tar +++ b/localrepo/ligature-20220808.1225.tar diff --git a/localrepo/lsp-mode-20240406.356.tar b/localrepo/lsp-mode-20240406.356.tar Binary files differindex 9376bdfa..122ad294 100644 --- a/localrepo/lsp-mode-20240406.356.tar +++ b/localrepo/lsp-mode-20240406.356.tar diff --git a/localrepo/lsp-ui-20240330.2227.tar b/localrepo/lsp-ui-20240330.2227.tar Binary files differindex 926f7ed4..76fe7785 100644 --- a/localrepo/lsp-ui-20240330.2227.tar +++ b/localrepo/lsp-ui-20240330.2227.tar diff --git a/localrepo/lv-0.15.0.tar b/localrepo/lv-0.15.0.tar Binary files differindex 087a1080..31d21c3a 100644 --- a/localrepo/lv-0.15.0.tar +++ b/localrepo/lv-0.15.0.tar diff --git a/localrepo/madhat2r-theme-20170203.30.tar b/localrepo/madhat2r-theme-20170203.30.tar Binary files differindex 3f134c43..578ba75a 100644 --- a/localrepo/madhat2r-theme-20170203.30.tar +++ b/localrepo/madhat2r-theme-20170203.30.tar diff --git a/localrepo/magit-20240404.1901.tar b/localrepo/magit-20240404.1901.tar Binary files differindex 5943cde0..9174ca22 100644 --- a/localrepo/magit-20240404.1901.tar +++ b/localrepo/magit-20240404.1901.tar diff --git a/localrepo/magit-section-20240311.1407.tar b/localrepo/magit-section-20240311.1407.tar Binary files differindex b4fd28df..6a5a7936 100644 --- a/localrepo/magit-section-20240311.1407.tar +++ b/localrepo/magit-section-20240311.1407.tar diff --git a/localrepo/malyon-20161208.2125.tar b/localrepo/malyon-20161208.2125.tar Binary files differindex 439128bd..8e5a6aa0 100644 --- a/localrepo/malyon-20161208.2125.tar +++ b/localrepo/malyon-20161208.2125.tar diff --git a/localrepo/marginalia-1.6.tar b/localrepo/marginalia-1.6.tar Binary files differindex ddcdffef..d9d8f274 100644 --- a/localrepo/marginalia-1.6.tar +++ b/localrepo/marginalia-1.6.tar diff --git a/localrepo/markdown-mode-2.6.tar b/localrepo/markdown-mode-2.6.tar Binary files differindex a2272247..7d5405bd 100644 --- a/localrepo/markdown-mode-2.6.tar +++ b/localrepo/markdown-mode-2.6.tar diff --git a/localrepo/mood-line-20231210.1309.tar b/localrepo/mood-line-20231210.1309.tar Binary files differindex 393b8269..7f2738bb 100644 --- a/localrepo/mood-line-20231210.1309.tar +++ b/localrepo/mood-line-20231210.1309.tar diff --git a/localrepo/nerd-icons-20240319.833.tar b/localrepo/nerd-icons-20240319.833.tar Binary files differindex bca92cc9..51f6fdc7 100644 --- a/localrepo/nerd-icons-20240319.833.tar +++ b/localrepo/nerd-icons-20240319.833.tar diff --git a/localrepo/nerd-icons-ibuffer-20230417.1549.tar b/localrepo/nerd-icons-ibuffer-20230417.1549.tar Binary files differindex 25f6eb8e..639df931 100644 --- a/localrepo/nerd-icons-ibuffer-20230417.1549.tar +++ b/localrepo/nerd-icons-ibuffer-20230417.1549.tar diff --git a/localrepo/nov-20230715.1434.tar b/localrepo/nov-20230715.1434.tar Binary files differindex c3217ff5..941c3f6d 100644 --- a/localrepo/nov-20230715.1434.tar +++ b/localrepo/nov-20230715.1434.tar diff --git a/localrepo/olivetti-20231104.538.tar b/localrepo/olivetti-20231104.538.tar Binary files differindex dfc5cf6d..158d5912 100644 --- a/localrepo/olivetti-20231104.538.tar +++ b/localrepo/olivetti-20231104.538.tar diff --git a/localrepo/org-contacts-1.1.tar b/localrepo/org-contacts-1.1.tar Binary files differindex 35065a14..9e8b02f8 100644 --- a/localrepo/org-contacts-1.1.tar +++ b/localrepo/org-contacts-1.1.tar diff --git a/localrepo/org-drill-2.7.0.tar b/localrepo/org-drill-2.7.0.tar Binary files differindex f3efdf8b..bce52415 100644 --- a/localrepo/org-drill-2.7.0.tar +++ b/localrepo/org-drill-2.7.0.tar diff --git a/localrepo/org-roam-20240114.1941.tar b/localrepo/org-roam-20240114.1941.tar Binary files differindex adb70660..905acb46 100644 --- a/localrepo/org-roam-20240114.1941.tar +++ b/localrepo/org-roam-20240114.1941.tar diff --git a/localrepo/org-super-agenda-20240301.1602.tar b/localrepo/org-super-agenda-20240301.1602.tar Binary files differindex 19b13e84..885a7886 100644 --- a/localrepo/org-super-agenda-20240301.1602.tar +++ b/localrepo/org-super-agenda-20240301.1602.tar diff --git a/localrepo/org-superstar-1.5.1.tar b/localrepo/org-superstar-1.5.1.tar Binary files differindex 3995f3c2..7cd0cdc4 100644 --- a/localrepo/org-superstar-1.5.1.tar +++ b/localrepo/org-superstar-1.5.1.tar diff --git a/localrepo/ox-hugo-20240305.1923.tar b/localrepo/ox-hugo-20240305.1923.tar Binary files differindex 0a4cbd84..ebeeda92 100644 --- a/localrepo/ox-hugo-20240305.1923.tar +++ b/localrepo/ox-hugo-20240305.1923.tar diff --git a/localrepo/package-build-20240306.2234.tar b/localrepo/package-build-20240306.2234.tar Binary files differindex 2d5df205..01a922e6 100644 --- a/localrepo/package-build-20240306.2234.tar +++ b/localrepo/package-build-20240306.2234.tar diff --git a/localrepo/package-lint-0.23.tar b/localrepo/package-lint-0.23.tar Binary files differindex 30ba3b51..8590a874 100644 --- a/localrepo/package-lint-0.23.tar +++ b/localrepo/package-lint-0.23.tar diff --git a/localrepo/pdf-tools-1.1.0.tar b/localrepo/pdf-tools-1.1.0.tar Binary files differindex 28d82bda..be713b47 100644 --- a/localrepo/pdf-tools-1.1.0.tar +++ b/localrepo/pdf-tools-1.1.0.tar diff --git a/localrepo/pdf-view-restore-20190904.1708.tar b/localrepo/pdf-view-restore-20190904.1708.tar Binary files differindex b020f2d5..cf811794 100644 --- a/localrepo/pdf-view-restore-20190904.1708.tar +++ b/localrepo/pdf-view-restore-20190904.1708.tar diff --git a/localrepo/persist-0.6.tar b/localrepo/persist-0.6.tar Binary files differindex 0d96deb6..44c0f722 100644 --- a/localrepo/persist-0.6.tar +++ b/localrepo/persist-0.6.tar diff --git a/localrepo/poetry-20240329.1103.tar b/localrepo/poetry-20240329.1103.tar Binary files differnew file mode 100644 index 00000000..75018b7b --- /dev/null +++ b/localrepo/poetry-20240329.1103.tar diff --git a/localrepo/popup-0.5.9.tar b/localrepo/popup-0.5.9.tar Binary files differindex 3c63f0c3..945610a3 100644 --- a/localrepo/popup-0.5.9.tar +++ b/localrepo/popup-0.5.9.tar diff --git a/localrepo/projectile-2.8.0.tar b/localrepo/projectile-2.8.0.tar Binary files differindex eb09813a..005099ca 100644 --- a/localrepo/projectile-2.8.0.tar +++ b/localrepo/projectile-2.8.0.tar diff --git a/localrepo/promise-20210307.727.tar b/localrepo/promise-20210307.727.tar Binary files differindex fe812a33..bdf27e10 100644 --- a/localrepo/promise-20210307.727.tar +++ b/localrepo/promise-20210307.727.tar diff --git a/localrepo/pyvenv-20211014.707.tar b/localrepo/pyvenv-20211014.707.tar Binary files differnew file mode 100644 index 00000000..bfc9b425 --- /dev/null +++ b/localrepo/pyvenv-20211014.707.tar diff --git a/localrepo/racket-mode-1.0.20240319.160226.tar b/localrepo/racket-mode-1.0.20240319.160226.tar Binary files differdeleted file mode 100644 index 77413768..00000000 --- a/localrepo/racket-mode-1.0.20240319.160226.tar +++ /dev/null diff --git a/localrepo/rainbow-mode-1.0.6.tar b/localrepo/rainbow-mode-1.0.6.tar Binary files differindex 13acf33c..69b279fa 100644 --- a/localrepo/rainbow-mode-1.0.6.tar +++ b/localrepo/rainbow-mode-1.0.6.tar diff --git a/localrepo/request-0.3.3.tar b/localrepo/request-0.3.3.tar Binary files differindex 423a7d49..2b77881b 100644 --- a/localrepo/request-0.3.3.tar +++ b/localrepo/request-0.3.3.tar diff --git a/localrepo/ripgrep-20220520.1410.tar b/localrepo/ripgrep-20220520.1410.tar Binary files differindex 7ef4b7f2..5fc97933 100644 --- a/localrepo/ripgrep-20220520.1410.tar +++ b/localrepo/ripgrep-20220520.1410.tar diff --git a/localrepo/s-20220902.1511.tar b/localrepo/s-20220902.1511.tar Binary files differindex 5b160aa3..066b0c27 100644 --- a/localrepo/s-20220902.1511.tar +++ b/localrepo/s-20220902.1511.tar diff --git a/localrepo/sicp-20200512.1137.tar b/localrepo/sicp-20200512.1137.tar Binary files differdeleted file mode 100644 index a01ae053..00000000 --- a/localrepo/sicp-20200512.1137.tar +++ /dev/null diff --git a/localrepo/simple-httpd-20230821.1458.tar b/localrepo/simple-httpd-20230821.1458.tar Binary files differindex fb62c692..00218834 100644 --- a/localrepo/simple-httpd-20230821.1458.tar +++ b/localrepo/simple-httpd-20230821.1458.tar diff --git a/localrepo/spinner-1.7.4.tar b/localrepo/spinner-1.7.4.tar Binary files differindex ad940748..07f6dd74 100644 --- a/localrepo/spinner-1.7.4.tar +++ b/localrepo/spinner-1.7.4.tar diff --git a/localrepo/sudo-edit-20220801.1317.tar b/localrepo/sudo-edit-20220801.1317.tar Binary files differindex 255fae8e..bc5416ce 100644 --- a/localrepo/sudo-edit-20220801.1317.tar +++ b/localrepo/sudo-edit-20220801.1317.tar diff --git a/localrepo/swiper-0.14.2.tar b/localrepo/swiper-0.14.2.tar Binary files differindex ed5cdbba..b3d04dbd 100644 --- a/localrepo/swiper-0.14.2.tar +++ b/localrepo/swiper-0.14.2.tar diff --git a/localrepo/tablist-1.0.tar b/localrepo/tablist-1.0.tar Binary files differindex ab4b983f..b912fea2 100644 --- a/localrepo/tablist-1.0.tar +++ b/localrepo/tablist-1.0.tar diff --git a/localrepo/telega-20240322.901.tar b/localrepo/telega-20240322.901.tar Binary files differindex 830c2ebd..0ce12a42 100644 --- a/localrepo/telega-20240322.901.tar +++ b/localrepo/telega-20240322.901.tar diff --git a/localrepo/tide-20230620.1444.tar b/localrepo/tide-20230620.1444.tar Binary files differindex 7a787873..0d679617 100644 --- a/localrepo/tide-20230620.1444.tar +++ b/localrepo/tide-20230620.1444.tar diff --git a/localrepo/tomelr-0.4.3.tar b/localrepo/tomelr-0.4.3.tar Binary files differindex 16b79075..0d6a9ea0 100644 --- a/localrepo/tomelr-0.4.3.tar +++ b/localrepo/tomelr-0.4.3.tar diff --git a/localrepo/toml-mode-20161107.1800.tar b/localrepo/toml-mode-20161107.1800.tar Binary files differindex cd9731df..8e6921f4 100644 --- a/localrepo/toml-mode-20161107.1800.tar +++ b/localrepo/toml-mode-20161107.1800.tar diff --git a/localrepo/transient-20240405.1443.tar b/localrepo/transient-20240405.1443.tar Binary files differindex 406cfddb..975259d0 100644 --- a/localrepo/transient-20240405.1443.tar +++ b/localrepo/transient-20240405.1443.tar diff --git a/localrepo/tree-sitter-20220212.1632.tar b/localrepo/tree-sitter-20220212.1632.tar Binary files differindex 6826b158..1abce838 100644 --- a/localrepo/tree-sitter-20220212.1632.tar +++ b/localrepo/tree-sitter-20220212.1632.tar diff --git a/localrepo/treesit-auto-20240401.1240.tar b/localrepo/treesit-auto-20240401.1240.tar Binary files differindex eee0aa2a..93e05b88 100644 --- a/localrepo/treesit-auto-20240401.1240.tar +++ b/localrepo/treesit-auto-20240401.1240.tar diff --git a/localrepo/tsc-20220212.1632.tar b/localrepo/tsc-20220212.1632.tar Binary files differindex d580f2a3..245f1da9 100644 --- a/localrepo/tsc-20220212.1632.tar +++ b/localrepo/tsc-20220212.1632.tar diff --git a/localrepo/visual-fill-column-2.6.2.tar b/localrepo/visual-fill-column-2.6.2.tar Binary files differindex 9aad9034..aeeb15d4 100644 --- a/localrepo/visual-fill-column-2.6.2.tar +++ b/localrepo/visual-fill-column-2.6.2.tar diff --git a/localrepo/vscode-icon-20230330.2206.tar b/localrepo/vscode-icon-20230330.2206.tar Binary files differindex c77a2699..8a358e4f 100644 --- a/localrepo/vscode-icon-20230330.2206.tar +++ b/localrepo/vscode-icon-20230330.2206.tar diff --git a/localrepo/vterm-20240325.1551.tar b/localrepo/vterm-20240325.1551.tar Binary files differindex 2842b46c..4b0990e7 100644 --- a/localrepo/vterm-20240325.1551.tar +++ b/localrepo/vterm-20240325.1551.tar diff --git a/localrepo/web-mode-17.3.19.tar b/localrepo/web-mode-17.3.19.tar Binary files differindex 57e38d2c..4caa4c2f 100644 --- a/localrepo/web-mode-17.3.19.tar +++ b/localrepo/web-mode-17.3.19.tar diff --git a/localrepo/which-key-3.6.0.tar b/localrepo/which-key-3.6.0.tar Binary files differindex d0f57954..26aed842 100644 --- a/localrepo/which-key-3.6.0.tar +++ b/localrepo/which-key-3.6.0.tar diff --git a/localrepo/wiki-summary-20181010.1824.tar b/localrepo/wiki-summary-20181010.1824.tar Binary files differindex b1ff4405..22ea72c2 100644 --- a/localrepo/wiki-summary-20181010.1824.tar +++ b/localrepo/wiki-summary-20181010.1824.tar diff --git a/localrepo/windsize-20181029.2257.tar b/localrepo/windsize-20181029.2257.tar Binary files differindex 49c0ba19..ad475ee6 100644 --- a/localrepo/windsize-20181029.2257.tar +++ b/localrepo/windsize-20181029.2257.tar diff --git a/localrepo/with-editor-20240101.2226.tar b/localrepo/with-editor-20240101.2226.tar Binary files differindex 276fa1ed..29c69688 100644 --- a/localrepo/with-editor-20240101.2226.tar +++ b/localrepo/with-editor-20240101.2226.tar diff --git a/localrepo/yaml-20231211.1501.tar b/localrepo/yaml-20231211.1501.tar Binary files differindex de48c563..adc0aa53 100644 --- a/localrepo/yaml-20231211.1501.tar +++ b/localrepo/yaml-20231211.1501.tar diff --git a/localrepo/yaml-mode-0.0.16.tar b/localrepo/yaml-mode-0.0.16.tar Binary files differindex 55ae5e74..06885825 100644 --- a/localrepo/yaml-mode-0.0.16.tar +++ b/localrepo/yaml-mode-0.0.16.tar diff --git a/localrepo/yasnippet-0.14.1.tar b/localrepo/yasnippet-0.14.1.tar Binary files differindex d1a4b942..30576abb 100644 --- a/localrepo/yasnippet-0.14.1.tar +++ b/localrepo/yasnippet-0.14.1.tar diff --git a/localrepo/ztree-1.0.6.tar b/localrepo/ztree-1.0.6.tar Binary files differindex 1cbee399..b6e5b0d7 100644 --- a/localrepo/ztree-1.0.6.tar +++ b/localrepo/ztree-1.0.6.tar 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 |
