summary refs log tree commit diff stats
path: root/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'init.el')
-rw-r--r--init.el119
1 files changed, 84 insertions, 35 deletions
diff --git a/init.el b/init.el index b4fade6..d67f8e7 100644 --- a/init.el +++ b/init.el
@@ -14,6 +14,14 @@
14;; - Be kind to yourself. 14;; - Be kind to yourself.
15;; - Make good choices. 15;; - Make good choices.
16 16
17;;; Commentary
18
19;; My init.el. There are many like it, but this one is mine.
20
21;; Ideas:
22;; [[https://emacs.stackexchange.com/questions/17278/truncate-only-certain-lines-and-use-continuation-lines-elsewhere][Truncate org-mode headings]]
23;; [[https://emacs.stackexchange.com/questions/7432/make-visual-line-mode-more-compatible-with-org-mode][another link that might be useful for truncating]]
24
17;;; Code: 25;;; Code:
18 26
19(let ((early-features `((early-init . ,(locate-user-emacs-file "early-init")) 27(let ((early-features `((early-init . ,(locate-user-emacs-file "early-init"))
@@ -104,6 +112,8 @@
104 (:with-mode Custom-mode 112 (:with-mode Custom-mode
105 (:local-set imenu-generic-expression +cus-edit-imenu-generic-expression))) 113 (:local-set imenu-generic-expression +cus-edit-imenu-generic-expression)))
106 114
115(setup (:require find-script))
116
107(setup (:require goto-addr) 117(setup (:require goto-addr)
108 (if (fboundp #'global-goto-address-mode) 118 (if (fboundp #'global-goto-address-mode)
109 (global-goto-address-mode) 119 (global-goto-address-mode)
@@ -242,17 +252,15 @@
242 (:option +browse-url-transformations `((,(rx (or "youtube.com" 252 (:option +browse-url-transformations `((,(rx (or "youtube.com"
243 "youtu.be")) 253 "youtu.be"))
244 . ,+invidious-host) 254 . ,+invidious-host)
245 ("twitter\\.com" 255 ("twitter\\.com" . "nitter.net")
246 . "nitter.net") 256 ("instagram\\.com" . "bibilogram.art")
247 ("instagram\\.com"
248 . "bibilogram.art")
249 (,(rx (or "reddit.com" 257 (,(rx (or "reddit.com"
250 "old.reddit.com")) 258 "old.reddit.com"))
251 . "teddit.net") 259 . "teddit.net")
252 ("medium\\.com" 260 ("medium\\.com" . "scribe.rip")
253 . "scribe.rip") 261 ("www\\.npr\\.org" . "text.npr.org")
254 ("www\\.npr\\.org" 262 ;;TODO: Various paste sites
255 . "text.npr.org"))) 263 ))
256 (+browse-url-transform-url-global-mode +1)) 264 (+browse-url-transform-url-global-mode +1))
257 265
258(setup calendar 266(setup calendar
@@ -461,7 +469,8 @@
461 '(context-menu-ffap 469 '(context-menu-ffap
462 context-menu-region 470 context-menu-region
463 context-menu-undo 471 context-menu-undo
464 context-menu-dictionary)) 472 ;; context-menu-dictionary
473 ))
465 (context-menu-mode +1)) 474 (context-menu-mode +1))
466 (dolist (click '(;; Fix scrolling in the margin 475 (dolist (click '(;; Fix scrolling in the margin
467 wheel-down double-wheel-down triple-wheel-down 476 wheel-down double-wheel-down triple-wheel-down
@@ -470,9 +479,25 @@
470 (global-set-key (vector 'left-margin click) 'mwheel-scroll))) 479 (global-set-key (vector 'left-margin click) 'mwheel-scroll)))
471 480
472(setup net-utils 481(setup net-utils
482 (:needs "traceroute")
473 (:require +finger) ; fixes `finger' to use var below 483 (:require +finger) ; fixes `finger' to use var below
474 (:option finger-X.500-host-regexps '(".") ; only send username 484 (:option finger-X.500-host-regexps '(".") ; only send username
475 )) 485 )
486 (require 'transient)
487 (transient-define-prefix net-utils ()
488 "Networking utilities"
489 ["Actions"
490 ("p" "Ping" ping)
491 ("i" "Ifconfig" ifconfig)
492 ("w" "Iwconfig" iwconfig)
493 ("n" "Netstat" netstat)
494 ("a" "Arp" arp)
495 ("r" "Route" route)
496 ("h" "Nslookup host" nslookup-host)
497 ("d" "Dig" dig)
498 ("s" "Smb Client" smbclient)
499 ("t" "Traceroute" traceroute)])
500 (:+key "C-z M-n" #'net-utils))
476 501
477(setup notmuch 502(setup notmuch
478 (:load-from "~/usr/share/emacs/site-lisp/") 503 (:load-from "~/usr/share/emacs/site-lisp/")
@@ -561,7 +586,7 @@
561 org-fontify-done-headline t 586 org-fontify-done-headline t
562 org-fontify-quote-and-verse-blocks t 587 org-fontify-quote-and-verse-blocks t
563 org-fontify-whole-heading-line t 588 org-fontify-whole-heading-line t
564 org-hide-emphasis-markers t 589 org-hide-emphasis-markers nil
565 org-html-coding-system 'utf-8-unix 590 org-html-coding-system 'utf-8-unix
566 org-image-actual-width (list (* (window-font-width) 591 org-image-actual-width (list (* (window-font-width)
567 (- fill-column 8))) 592 (- fill-column 8)))
@@ -620,7 +645,15 @@
620 "C-c C-p" #'+org-previous-heading-widen 645 "C-c C-p" #'+org-previous-heading-widen
621 "C-c C-o" #'+org-open-at-point-dwim 646 "C-c C-o" #'+org-open-at-point-dwim
622 "`" #'+org-insert-tilde 647 "`" #'+org-insert-tilde
623 "~" #'+org-insert-backtick) 648 "~" #'+org-insert-backtick
649 "C-c C-x l" #'org-toggle-link-display
650 "C-c C-x m" (lambda () (interactive)
651 (setq-local org-hide-emphasis-markers
652 (not org-hide-emphasis-markers))
653 (font-lock-update))
654 "C-c C-x r" #'+org-drawer-list-add-resource
655 "C-M-k" #'kill-paragraph
656 "C-M-t" #'transpose-paragraphs)
624 (:global [f8] #'org-clock-in 657 (:global [f8] #'org-clock-in
625 [f9] #'org-clock-out 658 [f9] #'org-clock-out
626 "C-c l" #'org-store-link) 659 "C-c l" #'org-store-link)
@@ -632,6 +665,12 @@
632 (:local-set prettify-symbols-alist '(("DEADLINE:" . ?→) 665 (:local-set prettify-symbols-alist '(("DEADLINE:" . ?→)
633 ("SCHEDULED:" . ?↷) 666 ("SCHEDULED:" . ?↷)
634 ("CLOSED:" . ?✓)) 667 ("CLOSED:" . ?✓))
668 ;; electric-pair-pairs
669 ;; (append electric-pair-pairs
670 ;; (mapcar (lambda (emph)
671 ;; (let ((ch (string-to-char (car emph))))
672 ;; (cons ch ch)))
673 ;; org-emphasis-alist))
635 ;;+modeline-position-function #'+org-count-words-stupidly 674 ;;+modeline-position-function #'+org-count-words-stupidly
636 ) 675 )
637 (:local-hook user-save-hook #'+org-before-save@prettify-buffer) 676 (:local-hook user-save-hook #'+org-before-save@prettify-buffer)
@@ -649,6 +688,9 @@
649 (org-link-set-parameters "sms" :follow #'+org-sms-open) 688 (org-link-set-parameters "sms" :follow #'+org-sms-open)
650 (setf (alist-get "\\.x?html?\\'" org-file-apps nil nil #'equal) 689 (setf (alist-get "\\.x?html?\\'" org-file-apps nil nil #'equal)
651 #'+org-open-html)) 690 #'+org-open-html))
691 (:face 'org-done '((t (:inherit (modus-themes-subtle-green))))
692 'org-tag '((t (:inherit (secondary-selection))))
693 'org-todo '((t (:inherit (modus-themes-subtle-red)))))
652 ;; Extra keywords 694 ;; Extra keywords
653 (font-lock-add-keywords 695 (font-lock-add-keywords
654 'org-mode 696 'org-mode
@@ -1161,10 +1203,6 @@
1161 (:hook #'visual-line-mode 1203 (:hook #'visual-line-mode
1162 #'enable-lui-track 1204 #'enable-lui-track
1163 #'visual-fill-column-mode 1205 #'visual-fill-column-mode
1164 (defun +disable-electric-pair-mode ()
1165 "Disable `electric-pair-mode' in the current buffer."
1166 (interactive)
1167 (electric-pair-local-mode -1))
1168 #'enable-lui-autopaste) 1206 #'enable-lui-autopaste)
1169 (:local-set fringes-outside-margins t 1207 (:local-set fringes-outside-margins t
1170 right-margin-width (length lui-time-stamp-format) 1208 right-margin-width (length lui-time-stamp-format)
@@ -1181,6 +1219,7 @@
1181 (setf (alist-get 'lui-next-button-or-complete vertico-multiform-commands) 1219 (setf (alist-get 'lui-next-button-or-complete vertico-multiform-commands)
1182 '(flat)))) 1220 '(flat))))
1183 1221
1222 (tracking-mode +1)
1184 (:with-mode tracking-mode 1223 (:with-mode tracking-mode
1185 (:option tracking-position 'before-modes) 1224 (:option tracking-position 'before-modes)
1186 (:bind "C-c C-SPC" (lambda () (interactive) 1225 (:bind "C-c C-SPC" (lambda () (interactive)
@@ -1298,19 +1337,20 @@
1298 (with-eval-after-load 'vertico-multiform 1337 (with-eval-after-load 'vertico-multiform
1299 (setf (alist-get 'consult-buffer vertico-multiform-commands) '(flat)) 1338 (setf (alist-get 'consult-buffer vertico-multiform-commands) '(flat))
1300 (dolist (buf-cmd '(consult-find 1339 (dolist (buf-cmd '(consult-find
1301 consult-yank-pop 1340 consult-flymake
1302 consult-locate 1341 consult-focus-lines
1303 consult-grep
1304 consult-git-grep 1342 consult-git-grep
1305 consult-ripgrep 1343 consult-grep
1344 consult-imenu
1345 consult-imenu-multi
1346 consult-keep-lines
1306 consult-line 1347 consult-line
1307 consult-line-multi 1348 consult-line-multi
1349 consult-locate
1308 consult-multi-occur 1350 consult-multi-occur
1309 consult-keep-lines 1351 consult-outline
1310 consult-focus-lines 1352 consult-ripgrep
1311 consult-imenu 1353 consult-yank-pop))
1312 consult-imenu-multi
1313 consult-outline))
1314 (setf (alist-get buf-cmd vertico-multiform-commands) nil))))) 1354 (setf (alist-get buf-cmd vertico-multiform-commands) nil)))))
1315 1355
1316(setup (:straight consult-dir) 1356(setup (:straight consult-dir)
@@ -1508,6 +1548,11 @@
1508 (add-hook 'embark-collect-mode-hook #'consult-preview-at-point-mode)) 1548 (add-hook 'embark-collect-mode-hook #'consult-preview-at-point-mode))
1509 1549
1510(setup (:straight embrace) 1550(setup (:straight embrace)
1551 (dolist (mode '(LaTeX-mode org-mode ruby-mode))
1552 (add-hook (intern (format "%s-hook" mode))
1553 (intern (format "embrace-%s-hook" mode))))
1554 (:face 'embrace-help-pair-face '((t ( :inverse-video nil
1555 :inherit font-lock-keyword-face))))
1511 (:+key "C-," #'embrace-commander)) 1556 (:+key "C-," #'embrace-commander))
1512 1557
1513(setup (:straight (ement 1558(setup (:straight (ement
@@ -1613,7 +1658,7 @@
1613(setup (:straight (forge 1658(setup (:straight (forge
1614 :host github :repo "magit/forge") 1659 :host github :repo "magit/forge")
1615 (eq system-type 'gnu/linux)) 1660 (eq system-type 'gnu/linux))
1616 (require 'forge) 1661 (:quit) ; XXX: Somehow missing compat-26
1617 (add-to-list 'forge-alist 1662 (add-to-list 'forge-alist
1618 '("tildegit.org" "tildegit.org/api/v1" "tildegit.org" 1663 '("tildegit.org" "tildegit.org/api/v1" "tildegit.org"
1619 forge-gitea-repository))) 1664 forge-gitea-repository)))
@@ -1626,6 +1671,7 @@
1626(setup (:straight (frowny 1671(setup (:straight (frowny
1627 :host github 1672 :host github
1628 :repo "duckwork/frowny.el")) 1673 :repo "duckwork/frowny.el"))
1674 (:option frowny-eyes (rx (any ":=") (opt "'") (? "-")))
1629 (global-frowny-mode +1)) 1675 (global-frowny-mode +1))
1630 1676
1631(setup (:straight gcmh) 1677(setup (:straight gcmh)
@@ -1753,9 +1799,6 @@
1753 :fork ( :host nil 1799 :fork ( :host nil
1754 :repo "https://codeberg.org/acdw/emacs-jabber"))) 1800 :repo "https://codeberg.org/acdw/emacs-jabber")))
1755 (:also-load +jabber) 1801 (:also-load +jabber)
1756 (defvar +jabber-ws-prefix 0 "Width to pad left side of chats.")
1757 (defvar +jabber-pre-prompt " \n"
1758 "String to show before a prompt.")
1759 (:option jabber-account-list '(("acdw@hmm.st")) 1802 (:option jabber-account-list '(("acdw@hmm.st"))
1760 jabber-groupchat-buffer-format "%n" 1803 jabber-groupchat-buffer-format "%n"
1761 jabber-chat-buffer-format "%n" 1804 jabber-chat-buffer-format "%n"
@@ -1764,7 +1807,7 @@
1764 jabber-muc-decorate-presence-patterns 1807 jabber-muc-decorate-presence-patterns
1765 '(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$") 1808 '(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$")
1766 ("." . jabber-muc-presence-dim)) 1809 ("." . jabber-muc-presence-dim))
1767 jabber-muc-colorize-foreign t 1810 jabber-muc-colorize-foreign nil ; colorizing doesn't match my color theme
1768 jabber-chat-foreign-prompt-format (concat +jabber-pre-prompt 1811 jabber-chat-foreign-prompt-format (concat +jabber-pre-prompt
1769 "[%t] %n\n" 1812 "[%t] %n\n"
1770 (make-string +jabber-ws-prefix 1813 (make-string +jabber-ws-prefix
@@ -1798,7 +1841,6 @@
1798 jabber-console-mode)) 1841 jabber-console-mode))
1799 (let ((hook (intern (format "%s-hook" mode)))) 1842 (let ((hook (intern (format "%s-hook" mode))))
1800 (add-hook hook #'visual-fill-column-mode))) 1843 (add-hook hook #'visual-fill-column-mode)))
1801 (add-hook 'jabber-activity-mode-hook #'tracking-mode)
1802 (with-eval-after-load 'tracking 1844 (with-eval-after-load 'tracking
1803 (add-to-list 'tracking-ignored-buffers "discuss@conference.soprani.ca")) 1845 (add-to-list 'tracking-ignored-buffers "discuss@conference.soprani.ca"))
1804 (:with-mode jabber-chat-mode 1846 (:with-mode jabber-chat-mode
@@ -1893,6 +1935,7 @@
1893 1935
1894(setup (:straight mastodon) 1936(setup (:straight mastodon)
1895 (:option mastodon-instance-url "https://tiny.tilde.website" 1937 (:option mastodon-instance-url "https://tiny.tilde.website"
1938 mastodon-active-user "acdw"
1896 mastodon-client--token-file (.etc "mastodon.plstore") 1939 mastodon-client--token-file (.etc "mastodon.plstore")
1897 mastodon-auth-source-file (seq-some (lambda (i) 1940 mastodon-auth-source-file (seq-some (lambda (i)
1898 (when (and (stringp i) 1941 (when (and (stringp i)
@@ -2021,7 +2064,7 @@
2021 (:option completion-styles '(substring orderless basic) 2064 (:option completion-styles '(substring orderless basic)
2022 completion-category-defaults nil 2065 completion-category-defaults nil
2023 completion-category-overrides 2066 completion-category-overrides
2024 '((file (styles partial-completion)) 2067 '((file (styles basic partial-completion))
2025 (command (styles +orderless-with-initialism)) 2068 (command (styles +orderless-with-initialism))
2026 (variable (styles +orderless-with-initialism)) 2069 (variable (styles +orderless-with-initialism))
2027 (symbol (styles +orderless-with-initialism))) 2070 (symbol (styles +orderless-with-initialism)))
@@ -2061,6 +2104,7 @@
2061 (local-set-key (kbd "C-c M-o") 'org-mime-org-buffer-htmlize)))) 2104 (local-set-key (kbd "C-c M-o") 'org-mime-org-buffer-htmlize))))
2062 2105
2063(setup (:straight org-modern) 2106(setup (:straight org-modern)
2107 (:quit "I think I can do most of this myself.")
2064 (:option org-modern-hide-stars nil 2108 (:option org-modern-hide-stars nil
2065 org-modern-star nil 2109 org-modern-star nil
2066 org-modern-list nil 2110 org-modern-list nil
@@ -2086,7 +2130,9 @@
2086 (org-visibility-enable-hooks)) 2130 (org-visibility-enable-hooks))
2087 2131
2088(setup (:straight orglink) 2132(setup (:straight orglink)
2089 (global-orglink-mode +1)) 2133 (:option orglink-activate-in-modes '(text-mode prog-mode))
2134 (global-orglink-mode +1)
2135 (global-goto-address-mode -1))
2090 2136
2091(setup (:straight package-lint)) 2137(setup (:straight package-lint))
2092 2138
@@ -2216,6 +2262,8 @@
2216 (:also-load +slack) 2262 (:also-load +slack)
2217 (:option slack-prefer-current-team t 2263 (:option slack-prefer-current-team t
2218 slack-buffer-emojify t 2264 slack-buffer-emojify t
2265 slack-thread-also-send-to-room nil
2266 slack-typing-visibility 'buffer
2219 slack-buffer-create-on-notify t 2267 slack-buffer-create-on-notify t
2220 slack-enable-wysiwyg t 2268 slack-enable-wysiwyg t
2221 slack-file-dir (xdg-user-dir "DOWNLOAD") 2269 slack-file-dir (xdg-user-dir "DOWNLOAD")
@@ -2249,7 +2297,8 @@
2249 (sophomore-enable #'narrow-to-region) 2297 (sophomore-enable #'narrow-to-region)
2250 (sophomore-disable ; These are mostly annoying commands 2298 (sophomore-disable ; These are mostly annoying commands
2251 #'view-hello-file 2299 #'view-hello-file
2252 #'describe-gnu-project) 2300 #'describe-gnu-project
2301 #'suspend-frame)
2253 (sophomore-mode +1)) 2302 (sophomore-mode +1))
2254 2303
2255(setup (:straight ssh-config-mode) 2304(setup (:straight ssh-config-mode)
@@ -2263,7 +2312,7 @@
2263(setup (:straight super-save) 2312(setup (:straight super-save)
2264 (:option auto-save-default nil 2313 (:option auto-save-default nil
2265 super-save-auto-save-when-idle t 2314 super-save-auto-save-when-idle t
2266 super-save-idle-duration 60 2315 super-save-idle-duration 30
2267 super-save-exclude '(".gpg") 2316 super-save-exclude '(".gpg")
2268 super-save-remote-files nil) 2317 super-save-remote-files nil)
2269 (auto-save-visited-mode -1) 2318 (auto-save-visited-mode -1)