From ab3821c987f8549584b44f595a78aeacbffd3f17 Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Tue, 14 Sep 2021 16:55:03 -0500
Subject: Update TODO

---
 TODO.org | 1 +
 1 file changed, 1 insertion(+)

diff --git a/TODO.org b/TODO.org
index 9a3d8f9..336a550 100644
--- a/TODO.org
+++ b/TODO.org
@@ -20,6 +20,7 @@ I just have to make sure it's loading correctly in my own config… bleh
   - [ ]  =(╥﹏╥)=
   - [ ] =Σ ◕ ◡ ◕=
   - [ ] =╭∩╮(︶_︶)╭∩╮=
+  - [ ] =(งツ)ว=
   - [ ] =ʕ ᴖᴥᴖʔ= 
 
 ** TODO keep-acs (name?)
-- 
cgit 1.4.1-21-gabe81


From 71adb880043237c262813e8c9b500d1b2dd9755f Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Tue, 14 Sep 2021 16:55:14 -0500
Subject: Un-verbose-ify auto-revert-mode

---
 init.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/init.el b/init.el
index 3ac62dc..3ff6589 100644
--- a/init.el
+++ b/init.el
@@ -113,7 +113,8 @@ AKA, DO NOT USE THIS FUNCTION!!!"
   (:option auth-sources '("~/.authinfo" "~/.authinfo.gpg")))
 
 (setup autorevert
-  (:option global-auto-revert-non-file-buffers t)
+  (:option global-auto-revert-non-file-buffers t
+           auto-revert-verbose nil)
   (global-auto-revert-mode +1))
 
 (setup (:straight avy)
-- 
cgit 1.4.1-21-gabe81


From ca8221b36682b6c19df4ad33db4b7ec68bbb57fe Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Tue, 14 Sep 2021 16:55:35 -0500
Subject: Correct circe-command-{G,}QUIT behavior

See https://github.com/emacs-circe/circe/issues/402
---
 init.el | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/init.el b/init.el
index 3ff6589..855fb28 100644
--- a/init.el
+++ b/init.el
@@ -258,15 +258,28 @@ AKA, DO NOT USE THIS FUNCTION!!!"
 
            circe-command-QUIT :after
            (defun circe-quit@kill-buffer (&rest _)
-             (let ((circe-server-killed-confirmation 'kill-all))
+             ;; `circe-server-killed-confirmation' set to nil, and manually
+             ;; deleting all chat buffers, pending Github issue #402
+             ;; (https://github.com/emacs-circe/circe/issues/402)
+             (let ((circe-server-killed-confirmation nil))
                (with-circe-server-buffer
+                 (dolist (buf (circe-server-chat-buffers))
+                   (let ((circe-channel-killed-confirmation nil))
+                     (kill-buffer buf)))
                  (kill-buffer))))
 
            circe-command-GQUIT :after
            (defun circe-gquit@kill-buffer (&rest _)
-             (let ((circe-server-killed-confirmation 'kill-all))
+             ;; `circe-server-killed-confirmation' set to nil, and manually
+             ;; deleting all chat buffers, pending Github issue #402
+             ;; (https://github.com/emacs-circe/circe/issues/402)
+             (let ((circe-server-killed-confirmation nil))
                (dolist (buf (circe-server-buffers))
                  (with-current-buffer buf
+                   (dolist (buf (circe-server-chat-buffers))
+                     (let ((circe-channel-killed-confirmation nil))
+                       (kill-buffer buf)))
+                   (message "%s: %s" buf circe-server-killed-confirmation)
                    (kill-buffer))))))
 
   (defun circe-command-SHORTEN (url)
-- 
cgit 1.4.1-21-gabe81


From 01a8bdd9237d33c2c7a0072acabcdf6a239b738f Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Tue, 14 Sep 2021 16:56:23 -0500
Subject: Enable edit-server even when not (daemonp)

---
 init.el | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/init.el b/init.el
index 855fb28..47ca218 100644
--- a/init.el
+++ b/init.el
@@ -483,8 +483,8 @@ AKA, DO NOT USE THIS FUNCTION!!!"
   (:hook visual-line-mode))
 
 (setup (:straight-if (define-repeat-map
-			             :host nil
-			             :repo "https://tildegit.org/acdw/define-repeat-map.el")
+			           :host nil
+			           :repo "https://tildegit.org/acdw/define-repeat-map.el")
                      (acdw/system :home))
 
   (defun acdw/other-window-or-switch-buffer-backward ()
@@ -621,8 +621,7 @@ AKA, DO NOT USE THIS FUNCTION!!!"
 
 ;; requires extension:
 ;; https://addons.mozilla.org/en-US/firefox/addon/edit-with-emacs1/
-(setup (:straight-if edit-server
-                     (daemonp))
+(setup (:straight edit-server)
   (:require edit-server)
   (edit-server-start)
 
-- 
cgit 1.4.1-21-gabe81


From c5b6a0774db7ecb2920db342abab5dbf5bcad9fb Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Tue, 14 Sep 2021 16:56:46 -0500
Subject: Add fat-finger-exit

---
 init.el      |  3 +--
 lisp/acdw.el | 12 ++++++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/init.el b/init.el
index 47ca218..ec5a825 100644
--- a/init.el
+++ b/init.el
@@ -781,8 +781,7 @@ AKA, DO NOT USE THIS FUNCTION!!!"
            "C-x o" #'acdw/other-window-or-switch-buffer
            "C-x O" #'acdw/other-window-or-switch-buffer-backward
            "C-c _" #'add-file-local-variable
-           "C-x C-c" #'delete-frame ; I keep fat-fingering and exiting
-           )
+           "C-x C-c" #'acdw/fat-finger-exit)
 
   (:with-map toggle-map
     (:bind "c" #'column-number-mode
diff --git a/lisp/acdw.el b/lisp/acdw.el
index 91381da..b8a1906 100644
--- a/lisp/acdw.el
+++ b/lisp/acdw.el
@@ -632,6 +632,18 @@ This function is internal.  Use `acdw/make-password-fetcher' instead."
   (interactive "p")
   (dotimes (or n 1)
     (insert "💩")))
+
+;;; Fat finger solutions
+(defun acdw/fat-finger-exit (&optional prefix)
+  "Delete a frame, or kill Emacs with confirmation.
+When called with PREFIX, just kill Emacs without confirmation."
+  (interactive "P")
+  (if (or prefix
+          (and (= 1 (length (frame-list)))
+               (yes-or-no-p "This is the last frame!  Wanna quit?")))
+      (kill-emacs)
+    (ignore-errors
+      (delete-frame))))
 
 (provide 'acdw)
 ;;; acdw.el ends here
-- 
cgit 1.4.1-21-gabe81


From 4c9d8ea075657b1c35d3b7352043725b59525a82 Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Tue, 14 Sep 2021 16:56:56 -0500
Subject: ~mehehheheh

---
 init.el               | 69 +++++++++++++++++++++++++++------------------------
 lisp/acdw-irc.el      | 12 ---------
 lisp/acdw-modeline.el | 12 +++++++--
 lisp/acdw.el          | 33 ++++++++++++++++++------
 4 files changed, 72 insertions(+), 54 deletions(-)

diff --git a/init.el b/init.el
index ec5a825..4e558b8 100644
--- a/init.el
+++ b/init.el
@@ -934,8 +934,19 @@ AKA, DO NOT USE THIS FUNCTION!!!"
              (load (expand-file-name "eshell" user-emacs-directory))))))
 
 (setup eww
+  (defvar-local eww-readable-p nil
+    "Whether current buffer is in readable-mode.")
   (:option eww-search-prefix "https://duckduckgo.com/html?q="
            url-privacy-level '(email agent cookies lastloc))
+
+  (defun eww@is-readable (&rest _)
+    (setq-local eww-readable-p t))
+  (defun eww@is-not-readable (&rest _)
+    (setq-local eww-readable-p nil))
+  
+  (advice-add 'eww-readable :after #'eww@is-readable)
+  (advice-add 'eww-render :after #'eww@is-not-readable)
+  (advice-add 'eww-back-url :after #'eww@is-not-readable)
   
   (:hook #'reading-mode))
 
@@ -945,29 +956,7 @@ AKA, DO NOT USE THIS FUNCTION!!!"
     (exec-path-from-shell-initialize)))
 
 (setup (:straight expand-region)
-  (:global "C-=" #'er/expand-region
-           "C-SPC"
-           (defun acdw/set-mark-or-expand-region (arg)
-             "Set mark at point and activate, jump to mark, or expand region.
-See `set-mark-command' and `expand-region'.
-
-With no prefix argument, either run `set-mark-command' on first
-invocation and `er/expand-region' on each successive invocation.
-
-With any prefix argument 
-(e.g., \\[universal-argument] \\[set-mark-command]), act as with
-`set-mark-command' (i.e., pop the mark).  Don't care about
-successive invocations."
-             (interactive "P")
-             (cond
-              ((or  arg
-                    (and set-mark-command-repeat-pop
-                         (eq last-command 'pop-to-mark-command)))
-               (setq this-command 'set-mark-command)
-               (set-mark-command arg))
-              ((eq last-command 'acdw/set-mark-or-expand-region)
-               (er/expand-region 1))
-              (t (set-mark-command arg))))))
+  (:global "C-=" #'er/expand-region))
 
 (setup (:straight-if fennel-mode
                      (executable-find "fennel"))
@@ -1057,11 +1046,18 @@ specific to most general, they are these:
 
 (setup (:straight flyspell-correct)
   (:option flyspell-correct-interface #'flyspell-correct-completing-read
-           flyspell-correct--cr-key "`")
+           flyspell-correct--cr-key ";")
+
+  (defun acdw/flyspell-correct-f7 ()
+    "Run a full spell correction on the current buffer."
+    (interactive)
+    (save-mark-and-excursion
+      (flyspell-correct-move 0 :forward :rapid)))
+
   (:with-feature flyspell
-    (:hook (defun flyspell@correct ()
-             (:bind "C-;" #'flyspell-correct-wrapper)
-             (:unbind "C-," "C-." "C-M-i")))))
+    (:bind "C-." #'flyspell-correct-wrapper
+           "<f7>" #'acdw/flyspell-correct-f7)
+    (:unbind "C-," "C-." "C-M-i")))
 
 (setup (:straight-if forge
                      (acdw/system :home))
@@ -1349,9 +1345,11 @@ browser defined in `browse-url-secondary-browser-function'."
 (setup (:straight markdown-mode)
   (:file-match (rx ".md" eos)
                (rx ".markdown" eos))
+  (:hook #'variable-pitch-mode)
 
   (:with-mode gfm-mode
-    (:file-match (rx "README.md" eos)))
+    (:file-match (rx "README.md" eos))
+    (:hook #'variable-pitch-mode))
 
   (when (executable-find "markdownfmt")
     (with-eval-after-load 'apheleia
@@ -1491,10 +1489,11 @@ browser defined in `browse-url-secondary-browser-function'."
   (:option
    org-adapt-indentation nil
    org-agenda-files nil                 ; only until I set this up
-   org-catch-invisible-edits 'smart
+   org-catch-invisible-edits 'show-and-error
    org-clock-clocked-in-display 'mode-line
    org-clock-string-limit 7             ; gives time and not title
    org-confirm-babel-evaluate nil
+   org-cycle-separator-lines 0
    org-directory "~/org"
    org-ellipsis " …"
    org-export-coding-system 'utf-8-unix
@@ -1510,6 +1509,9 @@ browser defined in `browse-url-secondary-browser-function'."
    org-html-coding-system  'utf-8-unix
    org-image-actual-width '(300)
    org-imenu-depth 3
+   org-list-demote-modify-bullet '(("-" . "+")
+                                   ("+" . "*")
+                                   ("*" . "-"))
    org-outline-path-complete-in-steps nil
    org-pretty-entities t
    org-refile-use-outline-path 'file
@@ -1614,7 +1616,7 @@ browser defined in `browse-url-secondary-browser-function'."
     (paredit-mode +1))
 
   (dolist (mode lispy-modes)
-    (add-hook (intern (concat (symbol-name mode) "-hook"))
+    (add-hook (intern (format "%s-hook" mode))
               #'paredit@setup))
   
   (:also-load eldoc)
@@ -1622,7 +1624,7 @@ browser defined in `browse-url-secondary-browser-function'."
 
 (setup (:straight paren-face)
   (dolist (mode lispy-modes)
-    (add-hook (intern (concat (symbol-name mode) "-hook")) #'paren-face-mode)))
+    (add-hook (intern (format "%s-hook" mode)) #'paren-face-mode)))
 
 (setup (:straight-if (pdf-tools
                       :host github
@@ -1652,8 +1654,8 @@ browser defined in `browse-url-secondary-browser-function'."
   (:global "C-c l t" #'powerthesaurus-lookup-word-dwim))
 
 (setup (:straight prism)
-  (:hook-into lisp-mode
-              c-mode))
+  (dolist (mode lispy-modes)
+    (add-hook (intern (format "%s-hook" mode)) #'prism-mode)))
 
 (setup prog
   (:option show-paren-delay 0
@@ -1824,6 +1826,7 @@ browser defined in `browse-url-secondary-browser-function'."
               simple-modeline-segment-process
               acdw-modeline/god-mode-indicator
               acdw-modeline/minions
+              acdw-modeline/reading-mode
               acdw-modeline/narrowed
               acdw-modeline/major-mode)))
 
diff --git a/lisp/acdw-irc.el b/lisp/acdw-irc.el
index 3755441..b4b75ec 100644
--- a/lisp/acdw-irc.el
+++ b/lisp/acdw-irc.el
@@ -45,18 +45,6 @@ Stolen from s.el."
         (setq num (1- num)))
       (apply 'concat ss))))
 
-(if (fboundp 's-truncate)
-    (defalias 'truncate-string 's-truncate)
-  (defun truncate-string (len s &optional ellipsis)
-    "If STR is longer than LEN, cut it down and add ELLIPSIS to the end.
-When not specified, ELLIPSIS defaults to '...'."
-    (declare (pure t) (side-effect-free t))
-    (unless ellipsis
-      (setq ellipsis "..."))
-    (if (> (length s) len)
-        (format "%s%s" (substring s 0 (- len (length ellipsis))) ellipsis)
-      s)))
-
 
 ;;; IRC stuff
 
diff --git a/lisp/acdw-modeline.el b/lisp/acdw-modeline.el
index 5aa0a18..6e5afb8 100644
--- a/lisp/acdw-modeline.el
+++ b/lisp/acdw-modeline.el
@@ -33,12 +33,16 @@ Otherwise, cdr should be a function that takes two points (see `count-words')."
 
 (defun acdw-modeline/buffer-name ()     ; gonsie
   "Display the buffer name in a face reflecting its modified status."
-  (propertize " %b "
+  (propertize (concat " "
+                      (truncate-string (/ (window-total-width) 2)
+                                       (buffer-name) "~")
+                      " ")
               'face
               (if (buffer-modified-p)
                   'font-lock-warning-face
                 'font-lock-type-face)
-              'help-echo (buffer-file-name)))
+              'help-echo (or (buffer-file-name)
+                             (buffer-name))))
 
 (defun acdw-modeline/erc ()
   "ERC indicator for the modeline."
@@ -151,6 +155,10 @@ is, if point < mark."
                                          (region-bounds))))
                      'font-lock-face 'font-lock-variable-name-face))))
 
+(defun acdw-modeline/reading-mode ()
+  "Display an indicator if currently in reading mode, mine or EWW's."
+  (concat (if reading-mode "R" "") (if eww-readable-p "w" "")))
+
 (defun acdw-modeline/text-scale ()
   "Display the text scaling from the modeline, if scaled."
   ;; adapted from https://github.com/seagle0128/doom-modeline
diff --git a/lisp/acdw.el b/lisp/acdw.el
index b8a1906..0790f2e 100644
--- a/lisp/acdw.el
+++ b/lisp/acdw.el
@@ -54,6 +54,16 @@ ARG).  When called with multiple arguments or a list, it returns
 ;; I don't prefix these because ... reasons.  Honestly I probably should prefix
 ;; them.
 
+(defun truncate-string (len str &optional ellipsis)
+  "If STR is longer than LEN, cut it down and add ELLIPSIS to the end.
+When not specified, ELLIPSIS defaults to '...'."
+  (declare (pure t) (side-effect-free t))
+  (unless ellipsis
+    (setq ellipsis "..."))
+  (if (> (length str) len)
+      (format "%s%s" (substring str 0 (- len (length ellipsis))) ellipsis)
+    str))
+
 ;; Why isn't this a thing???
 (defmacro fbound-and-true-p (func)
   "Return the value of function FUNC if it is bound, else nil."
@@ -366,10 +376,15 @@ first."
           (goto-char (point-min))
           (kill-line)
           (insert extracted-heading))
-        (replace-regexp org-property-drawer-re "") ;Delete properties
-        (replace-regexp org-logbook-drawer-re "") ;Delete logbook
+        ;; Delete property drawers
+        (replace-regexp org-property-drawer-re "")
+        ;; Delete logbook drawers
+        (replace-regexp org-logbook-drawer-re "")
+        ;; Replace list items with their contents, paragraphed
         (replace-regexp org-list-full-item-re "
 \4")
+        ;; Delete comment lines
+        (replace-regexp (concat org-comment-regexp ".*$") "")
         ;; Re-fill text for clipboard
         (unfill-region (point-min) (point-max))
         (flush-lines "^$" (point-min) (point-max)))
@@ -626,12 +641,16 @@ This function is internal.  Use `acdw/make-password-fetcher' instead."
     (setq-local blink-matching-paren nil
                 show-paren-mode nil)))
 
-;;; uh
-(defun 💩 (n)
-  "💩 x N"
+
+;;; 💩
+(defun 💩 (&optional n)
+  "💩 x N."
   (interactive "p")
-  (dotimes (or n 1)
-    (insert "💩")))
+  (let ((n (or n 1)))
+    (while (> n 0)
+      (insert "💩")
+      (setq n (1- n)))))
+
 
 ;;; Fat finger solutions
 (defun acdw/fat-finger-exit (&optional prefix)
-- 
cgit 1.4.1-21-gabe81