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.el144
1 files changed, 98 insertions, 46 deletions
diff --git a/init.el b/init.el index 6775e33..d3fc88e 100644 --- a/init.el +++ b/init.el
@@ -149,7 +149,7 @@
149(setup (:require user-save) 149(setup (:require user-save)
150 (add-hook 'user-save-before-save-hook #'+clean-empty-lines) 150 (add-hook 'user-save-before-save-hook #'+clean-empty-lines)
151 (add-hook 'user-save-before-save-hook (defun user-save@save-some-buffers () 151 (add-hook 'user-save-before-save-hook (defun user-save@save-some-buffers ()
152 (save-some-buffers t t))) 152 (save-some-buffers t t)))
153 (user-save-global-mode +1)) 153 (user-save-global-mode +1))
154 154
155(setup (:require winner) 155(setup (:require winner)
@@ -520,18 +520,18 @@
520 ) 520 )
521 (with-eval-after-load 'transient 521 (with-eval-after-load 'transient
522 (transient-define-prefix net-utils () 522 (transient-define-prefix net-utils ()
523 "Networking utilities" 523 "Networking utilities"
524 ["Actions" 524 ["Actions"
525 ("p" "Ping" ping) 525 ("p" "Ping" ping)
526 ("i" "Ifconfig" ifconfig) 526 ("i" "Ifconfig" ifconfig)
527 ("w" "Iwconfig" iwconfig) 527 ("w" "Iwconfig" iwconfig)
528 ("n" "Netstat" netstat) 528 ("n" "Netstat" netstat)
529 ("a" "Arp" arp) 529 ("a" "Arp" arp)
530 ("r" "Route" route) 530 ("r" "Route" route)
531 ("h" "Nslookup host" nslookup-host) 531 ("h" "Nslookup host" nslookup-host)
532 ("d" "Dig" dig) 532 ("d" "Dig" dig)
533 ("s" "Smb Client" smbclient) 533 ("s" "Smb Client" smbclient)
534 ("t" "Traceroute" traceroute)]) 534 ("t" "Traceroute" traceroute)])
535 (:+key "C-z M-n" #'net-utils))) 535 (:+key "C-z M-n" #'net-utils)))
536 536
537(setup notmuch 537(setup notmuch
@@ -544,13 +544,20 @@
544 notmuch-address-save-filename (notmuch/ "addresses" t) 544 notmuch-address-save-filename (notmuch/ "addresses" t)
545 notmuch-address-use-company (featurep 'company) 545 notmuch-address-use-company (featurep 'company)
546 notmuch-search-oldest-first nil 546 notmuch-search-oldest-first nil
547 notmuch-archive-tags '("-inbox" "-unread")) 547 notmuch-archive-tags '("-inbox" "-unread")
548 notmuch-draft-tags '("+draft" "-inbox" "-unread"))
548 ;; Reading mail 549 ;; Reading mail
549 (:option notmuch-show-indent-content nil) 550 (:option notmuch-show-indent-content nil)
550 (add-hook 'notmuch-show-mode-hook #'visual-fill-column-mode) 551 (add-hook 'notmuch-show-mode-hook #'visual-fill-column-mode)
552 (:with-mode notmuch-search-mode
553 (:bind "RET" #'notmuch-search-show-thread
554 "M-RET" #'notmuch-tree-from-search-thread
555 "!" #'+notmuch-search-mark-spam))
556 (:with-mode notmuch-tree-mode
557 (:bind "!" #'+notmuch-tree-mark-spam-then-next))
551 ;; Composing mail 558 ;; Composing mail
552 (:option message-kill-buffer-on-exit t 559 (:option message-kill-buffer-on-exit t
553 message-auto-save-directory "~/var/mail/drafts") 560 message-auto-save-directory nil)
554 ;; Sending mail 561 ;; Sending mail
555 (:option send-mail-function #'sendmail-send-it 562 (:option send-mail-function #'sendmail-send-it
556 mail-specify-envelope-from t 563 mail-specify-envelope-from t
@@ -568,38 +575,47 @@
568 "tag:inbox" 575 "tag:inbox"
569 "tag:unread" 576 "tag:unread"
570 "NOT tag:Spam") 577 "NOT tag:Spam")
571 :key "i") 578 :key "m"
579 :search-type 'tree)
572 (list :name "inbox" 580 (list :name "inbox"
573 :query (+notmuch-query-concat 581 :query (+notmuch-query-concat
574 "tag:inbox" 582 "tag:inbox"
575 "NOT tag:Spam") 583 "NOT tag:Spam")
576 :key "I") 584 :key "i"
585 :search-type 'tree)
577 (list :name "lists+unread" 586 (list :name "lists+unread"
578 :query (+notmuch-query-concat 587 :query (+notmuch-query-concat
579 "tag:/List/" 588 "tag:/List/"
580 "tag:unread") 589 "tag:unread")
581 :key "l") 590 :key "l"
591 :search-type 'tree)
582 (list :name "lists" 592 (list :name "lists"
583 :query "tag:/List/" 593 :query "tag:/List/"
584 :key "L") 594 :key "L"
595 :search-type 'tree)
585 (list :name "unread" 596 (list :name "unread"
586 :query (+notmuch-query-concat 597 :query (+notmuch-query-concat
587 "tag:unread" 598 "tag:unread"
588 "NOT tag:Spam") 599 "NOT tag:Spam")
589 :key "u") 600 :key "u"
601 :search-type 'tree)
590 (list :name "flagged" 602 (list :name "flagged"
591 :query "tag:flagged" 603 :query "tag:flagged"
592 :key "f") 604 :key "f"
605 :search-type 'tree)
593 (list :name "sent" 606 (list :name "sent"
594 :query "tag:sent" 607 :query "tag:sent"
595 :key "t") 608 :key "t"
609 :search-type 'tree)
596 (list :name "drafts" 610 (list :name "drafts"
597 :query "tag:draft" 611 :query "tag:draft"
598 :key "d") 612 :key "d"
613 :search-type 'tree)
599 (list :name "all mail" 614 (list :name "all mail"
600 :query "*" 615 :query "*"
601 :key "a")))) 616 :key "a"
602 (:+leader "m" #'+notmuch-goto "C-m" #'+notmuch-goto 617 :search-type 'tree))))
618 (:+leader "m" #'notmuch-mua-new-mail "C-m" #'notmuch-jump-search
603 "n" #'notmuch "C-n" #'notmuch) 619 "n" #'notmuch "C-n" #'notmuch)
604 ;; For `focus' 620 ;; For `focus'
605 (put 'notmuch-message 'bounds-of-thing-at-point 'notmuch-show-message-extent)) 621 (put 'notmuch-message 'bounds-of-thing-at-point 'notmuch-show-message-extent))
@@ -671,10 +687,11 @@
671 org-startup-truncated nil 687 org-startup-truncated nil
672 org-startup-with-inline-images t 688 org-startup-with-inline-images t
673 org-tags-column -77 ;; (- (- fill-column 1 (length org-ellipsis))) 689 org-tags-column -77 ;; (- (- fill-column 1 (length org-ellipsis)))
674 org-todo-keywords '((sequence "TODO(t)" "WAIT(w@/!)" "ONGOING(o@)" 690 org-todo-keywords
675 "|" "DONE(d!)" "ASSIGNED(a!)") 691 '((sequence "TODO(t)" "WAIT(w@/!)" "ONGOING(o@)"
676 (sequence "|" "CANCELED(k@)") 692 "|" "DONE(d!)" "ASSIGNED(a@/!)")
677 (sequence "MEETING(m)")) 693 (sequence "|" "CANCELED(k@)")
694 (sequence "MEETING(m)"))
678 org-use-speed-commands t 695 org-use-speed-commands t
679 org-emphasis-alist '(("*" org-bold) 696 org-emphasis-alist '(("*" org-bold)
680 ("/" org-italic) 697 ("/" org-italic)
@@ -921,8 +938,8 @@
921 (:option shell-command-prompt-show-cwd t) 938 (:option shell-command-prompt-show-cwd t)
922 (:local-set +modeline-position-function 939 (:local-set +modeline-position-function
923 (lambda () (string-replace (getenv "HOME") 940 (lambda () (string-replace (getenv "HOME")
924 "~" 941 "~"
925 default-directory))) 942 default-directory)))
926 (:hook #'form-feed-mode)) 943 (:hook #'form-feed-mode))
927 944
928(setup shr 945(setup shr
@@ -1062,7 +1079,8 @@
1062 (:bind-into isearch 1079 (:bind-into isearch
1063 "M-j" #'avy-isearch) 1080 "M-j" #'avy-isearch)
1064 (setf (alist-get ?. avy-dispatch-alist) #'avy-action-embark) 1081 (setf (alist-get ?. avy-dispatch-alist) #'avy-action-embark)
1065 (+avy-buffer-face-mode +1)) 1082 ;; (+avy-buffer-face-mode +1)
1083 )
1066 1084
1067(setup (:straight bbdb) 1085(setup (:straight bbdb)
1068 (:straight bbdb-vcard) 1086 (:straight bbdb-vcard)
@@ -1070,7 +1088,9 @@
1070 (defun +bbdb-load () 1088 (defun +bbdb-load ()
1071 (:require bbdb-autoloads 1089 (:require bbdb-autoloads
1072 bbdb) 1090 bbdb)
1073 (bbdb-initialize 'gnus 'message)))) 1091 (bbdb-initialize 'gnus 'message)
1092 (bbdb-insinuate-message)
1093 (setq bbdb-complete-mail-allow-cycling t))))
1074 1094
1075(setup (:straight (bongo :type git 1095(setup (:straight (bongo :type git
1076 :flavor melpa 1096 :flavor melpa
@@ -1165,8 +1185,8 @@
1165 '(t)))))) 1185 '(t))))))
1166 1186
1167(setup (:straight circe) 1187(setup (:straight circe)
1168 ;; (:require _circe 1188 (:require _circe
1169 ;; +circe) 1189 +circe)
1170 ;; (:also-load circe-chanop) 1190 ;; (:also-load circe-chanop)
1171 ;; (+ensure-after-init (lambda () (defalias 'irc '+irc "Start IRC."))) 1191 ;; (+ensure-after-init (lambda () (defalias 'irc '+irc "Start IRC.")))
1172 1192
@@ -1499,6 +1519,11 @@
1499(setup (:straight dired-open) 1519(setup (:straight dired-open)
1500 (:load-after dired)) 1520 (:load-after dired))
1501 1521
1522(setup (:straight dired-rsync)
1523 (:load-after dired)
1524 (:bind-into dired-mode
1525 "r" #'dired-rsync))
1526
1502(setup (:straight dired-subtree) 1527(setup (:straight dired-subtree)
1503 (:load-after dired) 1528 (:load-after dired)
1504 (:bind-into dired 1529 (:bind-into dired
@@ -1702,6 +1727,12 @@
1702 (:+key "C-=" #'er/expand-region 1727 (:+key "C-=" #'er/expand-region
1703 "C--" #'+er/contract-or-negative-argument)) 1728 "C--" #'+er/contract-or-negative-argument))
1704 1729
1730(setup (:straight fennel-mode)
1731 (with-eval-after-load 'apheleia
1732 (when-let ((fnlfmt (executable-find "fnlfmt")))
1733 (setf (alist-get 'fnlfmt apheleia-formatters) (list fnlfmt 'filepath))
1734 (setf (alist-get 'fennel-mode apheleia-mode-alist) 'fnlfmt))))
1735
1705(setup (:straight (filldent :host nil 1736(setup (:straight (filldent :host nil
1706 :repo "https://codeberg.org/acdw/filldent.el")) 1737 :repo "https://codeberg.org/acdw/filldent.el"))
1707 (:+key "M-q" #'filldent-unfill-toggle)) 1738 (:+key "M-q" #'filldent-unfill-toggle))
@@ -1769,6 +1800,10 @@
1769 (setf (alist-get "\\.scm\\'" auto-insert-alist nil nil #'equal) 1800 (setf (alist-get "\\.scm\\'" auto-insert-alist nil nil #'equal)
1770 '(insert "#!/bin/sh\n#| -*- scheme -*-\nexec csi -s $0 \"$@\"\n|#\n"))) 1801 '(insert "#!/bin/sh\n#| -*- scheme -*-\nexec csi -s $0 \"$@\"\n|#\n")))
1771 1802
1803(setup (:straight (ghelp :repo "https://github.com/casouri/ghelp"))
1804 ;;; XXX: set this up!
1805 (:require))
1806
1772(setup (:straight (git-modes :host github :repo "magit/git-modes")) 1807(setup (:straight (git-modes :host github :repo "magit/git-modes"))
1773 (:require git-modes)) 1808 (:require git-modes))
1774 1809
@@ -1801,7 +1836,10 @@
1801 (:option hungry-delete-chars-to-skip " \t" 1836 (:option hungry-delete-chars-to-skip " \t"
1802 hungry-delete-join-reluctantly nil) 1837 hungry-delete-join-reluctantly nil)
1803 (+with-ensure-after-init 1838 (+with-ensure-after-init
1804 (add-to-list 'hungry-delete-except-modes 'eshell-mode)) 1839 (dolist (m '(eshell-mode
1840 nim-mode
1841 python-mode))
1842 (add-to-list 'hungry-delete-except-modes m)))
1805 (:bind-into paredit 1843 (:bind-into paredit
1806 ;; I define these functions here because they really require both packages 1844 ;; I define these functions here because they really require both packages
1807 ;; to make any sense. So, would I put them in `+hungry-delete' or 1845 ;; to make any sense. So, would I put them in `+hungry-delete' or
@@ -1907,15 +1945,16 @@
1907 ('dark 1.0))) 1945 ('dark 1.0)))
1908 (+mapc-some-buffers #'+jabber-colors-update 1946 (+mapc-some-buffers #'+jabber-colors-update
1909 (lambda () (derived-mode-p 'jabber-chat-mode 1947 (lambda () (derived-mode-p 'jabber-chat-mode
1910 'jabber-roster-mode 1948 'jabber-roster-mode
1911 'jabber-activity-mode 1949 'jabber-activity-mode
1912 'jabber-browse-mode))))) 1950 'jabber-browse-mode)))))
1913 (dolist (mode '(jabber-chat-mode 1951 (dolist (mode '(jabber-chat-mode
1914 jabber-browse-mode 1952 jabber-browse-mode
1915 jabber-roster-mode 1953 jabber-roster-mode
1916 jabber-console-mode)) 1954 jabber-console-mode))
1917 (let ((hook (intern (format "%s-hook" mode)))) 1955 (let ((hook (intern (format "%s-hook" mode))))
1918 (add-hook hook #'visual-fill-column-mode) 1956 (add-hook hook #'visual-fill-column-mode)
1957 (add-hook hook (defun +electric-pair-disable-local-mode () (electric-pair-local-mode -1)))
1919 ;; (add-hook hook (lambda () (setq-local wrap-prefix " "))) 1958 ;; (add-hook hook (lambda () (setq-local wrap-prefix " ")))
1920 )) 1959 ))
1921 (with-eval-after-load 'tracking 1960 (with-eval-after-load 'tracking
@@ -1927,7 +1966,8 @@
1927 "🤔 "))) 1966 "🤔 ")))
1928 file-percentage-mode nil 1967 file-percentage-mode nil
1929 ;; wrap-prefix (make-string +jabber-ws-prefix ?\ ) 1968 ;; wrap-prefix (make-string +jabber-ws-prefix ?\ )
1930 comment-start nil)) 1969 comment-start nil)
1970 (:bind "C-c C-t" #'jabber-muc-set-topic))
1931 (:+leader "C-j" jabber-global-keymap) 1971 (:+leader "C-j" jabber-global-keymap)
1932 (advice-add 'jabber-activity-add :after #'+jabber-tracking-add) 1972 (advice-add 'jabber-activity-add :after #'+jabber-tracking-add)
1933 (advice-add 'jabber-activity-add-muc :after #'+jabber-tracking-add-muc) 1973 (advice-add 'jabber-activity-add-muc :after #'+jabber-tracking-add-muc)
@@ -1955,7 +1995,8 @@
1955 (:require +link-hint) 1995 (:require +link-hint)
1956 (+link-hint-open-secondary-setup) 1996 (+link-hint-open-secondary-setup)
1957 (+link-hint-open-chrome-setup) 1997 (+link-hint-open-chrome-setup)
1958 (:option link-hint-avy-style 'at-full) 1998 (:option link-hint-avy-style 'at-full
1999 link-hint-avy-all-windows t)
1959 (:+key "M-l" +link-hint-map) 2000 (:+key "M-l" +link-hint-map)
1960 (:with-map +link-hint-map 2001 (:with-map +link-hint-map
1961 (:bind "M-l" #'+link-hint-open-link "l" #'+link-hint-open-link 2002 (:bind "M-l" #'+link-hint-open-link "l" #'+link-hint-open-link
@@ -2006,7 +2047,7 @@
2006 (:hook #'visual-fill-column-mode)) 2047 (:hook #'visual-fill-column-mode))
2007 (with-eval-after-load 'apheleia 2048 (with-eval-after-load 'apheleia
2008 (when-let ((mdfmt-exe (executable-find "markdownfmt"))) 2049 (when-let ((mdfmt-exe (executable-find "markdownfmt")))
2009 (setf (alist-get 'markdownfmt apheleia-formatters) mdfmt-exe) 2050 (setf (alist-get 'markdownfmt apheleia-formatters) (list mdfmt-exe))
2010 (setf (alist-get 'markdown-mode apheleia-mode-alist) 'markdownfmt) 2051 (setf (alist-get 'markdown-mode apheleia-mode-alist) 'markdownfmt)
2011 (setf (alist-get 'gfm-mode apheleia-mode-alist) 'markdownfmt)))) 2052 (setf (alist-get 'gfm-mode apheleia-mode-alist) 'markdownfmt))))
2012 2053
@@ -2077,8 +2118,9 @@
2077 ((,class :inherit modus-themes-bold 2118 ((,class :inherit modus-themes-bold
2078 :foreground unspecified))) 2119 :foreground unspecified)))
2079 `(font-lock-comment-face 2120 `(font-lock-comment-face
2080 ((,class :inherit variable-pitch 2121 ((,class :inherit default
2081 :slant italic 2122 :slant normal
2123 :height 1.0
2082 :foreground ,fg-comment-yellow))) 2124 :foreground ,fg-comment-yellow)))
2083 `(font-lock-comment-delimiter-face 2125 `(font-lock-comment-delimiter-face
2084 ((,class :inherit fixed-pitch 2126 ((,class :inherit fixed-pitch
@@ -2265,7 +2307,9 @@
2265 lisp-mode-hook 2307 lisp-mode-hook
2266 scheme-mode-hook 2308 scheme-mode-hook
2267 geiser-mode-hook 2309 geiser-mode-hook
2268 geiser-repl-mode-hook)) 2310 geiser-repl-mode-hook
2311 fennel-mode-hook
2312 fennel-repl-mode-hook))
2269 (add-hook hook #'enable-paredit-mode)) 2313 (add-hook hook #'enable-paredit-mode))
2270 (:also-load eldoc) 2314 (:also-load eldoc)
2271 (eldoc-add-command #'paredit-backward-delete #'paredit-close-round)) 2315 (eldoc-add-command #'paredit-backward-delete #'paredit-close-round))
@@ -2357,6 +2401,8 @@
2357 (+modeline-concat 2401 (+modeline-concat
2358 '(+modeline-track 2402 '(+modeline-track
2359 simple-modeline-segment-misc-info)))) 2403 simple-modeline-segment-misc-info))))
2404 (lambda () (when (featurep 'dired-rsync)
2405 dired-rsync-modeline-status))
2360 ,(+modeline-concat 2406 ,(+modeline-concat
2361 '(+modeline-god-mode 2407 '(+modeline-god-mode
2362 +modeline-kmacro-indicator 2408 +modeline-kmacro-indicator
@@ -2392,7 +2438,10 @@
2392 (:also-load sly-autoloads 2438 (:also-load sly-autoloads
2393 +sly) 2439 +sly)
2394 (:option inferior-lisp-program +lisp-bin 2440 (:option inferior-lisp-program +lisp-bin
2395 sly-kill-without-query-p t) 2441 sly-kill-without-query-p t
2442 sly-command-switch-to-existing-lisp t)
2443 (:with-mode lisp-mode
2444 (:bind "C-c C-z" #'sly-mrepl))
2396 (:with-feature sly-mrepl 2445 (:with-feature sly-mrepl
2397 (dolist (key '("RET" "<return>")) 2446 (dolist (key '("RET" "<return>"))
2398 (:bind key #'sly-mrepl-return-at-end)) 2447 (:bind key #'sly-mrepl-return-at-end))
@@ -2607,6 +2656,9 @@
2607 2656
2608(setup (:straight xr)) 2657(setup (:straight xr))
2609 2658
2659(setup (:straight yaml-mode)
2660 (:file-match (rx "." (or "yml" "yaml") eos)))
2661
2610(setup (:straight yaoddmuse)) 2662(setup (:straight yaoddmuse))
2611 2663
2612(setup (:straight yasnippet) 2664(setup (:straight yasnippet)