init.el (15054B)
1 ;;; -*- lexical-binding: t; -*- 2 3 (setq gc-cons-threshold (* 1024 1024 1024)) 4 5 (setq read-process-output-max (string-to-number 6 (with-temp-buffer 7 (insert-file-contents "/proc/sys/fs/pipe-max-size") 8 (buffer-string)))) 9 10 (require 'server) 11 (unless (server-running-p) 12 (server-start)) 13 14 (require 'benchmark-init) 15 16 (add-to-list 'load-path (concat user-emacs-directory 17 "local-packages/emacs-kakafarm/")) 18 19 (load (locate-user-emacs-file "local-stuff.el")) 20 21 (setq package-archives '()) 22 (require 'use-package) 23 24 (setq major-mode-remap-alist '((emacs-lisp-mode . fundamental-mode))) 25 26 (autoload 'skribilo-mode "skribilo.el" "Skribilo mode." t) 27 28 '(progn 29 ;;; Weird https://www.youtube.com/watch?v=TjMTNSdhUvk stuff. 30 (setq inhibit-startup-message t) 31 (menu-bar-mode 1) 32 (fido-vertical-mode 1) 33 ;; (icomplete-vertical-mode 1) 34 (push 'flex completion-styles) 35 '(eldoc-mode 1) 36 (flymake-mode 1) 37 ;; (load-theme 'modus-vivendi-tinted t) 38 (setopt mode-line-end-spaces nil) 39 (set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?|)) 40 (xterm-mouse-mode 1)) 41 42 (use-package browse-url 43 :demand t 44 :custom 45 (browse-url-browser-function 'eww-browse-url) 46 (browse-url-new-window-flag t) 47 ) 48 49 (use-package casual-calc 50 :ensure nil 51 :bind (:map calc-mode-map ("C-o" . casual-calc-tmenu))) 52 53 (use-package casual-dired 54 :ensure nil 55 :bind (:map dired-mode-map ("C-o" . casual-dired-tmenu))) 56 57 (use-package casual-info 58 :ensure nil 59 :bind (:map Info-mode-map ("C-o" . casual-info-tmenu))) 60 61 '(use-package company 62 :defer t 63 :init 64 (add-hook 'after-init-hook 'global-company-mode)) 65 66 (use-package compilation 67 :demand t 68 :requires (ansi-color) 69 ) 70 71 ;; FIXME: Why can't I use it in the (use-package compilation :hook or :init)? 72 (add-hook 'compilation-filter-hook #'kakafarm/colorize-compilation) 73 74 75 (use-package corfu 76 :defer t 77 :config 78 (global-corfu-mode) 79 :custom 80 (corfu-auto t)) 81 82 (use-package cus-edit 83 :config 84 ;; Use another file for the ``customize'' customisations. 85 (setq custom-file (locate-user-emacs-file "custom-variables.el")) 86 (load custom-file 'noerror 'nomessage)) 87 88 (use-package detubifier 89 :defer t 90 ) 91 92 (use-package dictionary 93 :defer t 94 :custom 95 (dictionary-server "localhost")) 96 97 (use-package elfeed 98 :defer t 99 :config 100 ;; XXX: Not sure if I want it to be a `kakafarm/elfeed-feeds' 101 ;; variable that is then set to `elfeed-feeds' in the `:custom' 102 ;; section, or loaded inside the `elfeed-feeds.el' file using the 103 ;; `customize-set-value' function. 104 (load (locate-user-emacs-file "elfeed-feeds.el")) 105 (customize-set-value 'elfeed-curl-program-name 106 (expand-file-name "~/.guix-profile/bin/curl")) 107 :custom 108 ;; (elfeed-curl-max-connections 10) 109 (elfeed-search-filter "@1-week-ago +unread") 110 (elfeed-curl-program-name (expand-file-name "~/.guix-profile/bin/curl")) 111 ) 112 113 '(use-package elfeed-goodies 114 :config 115 (elfeed-goodies/setup)) 116 117 (use-package emacs 118 :ensure nil 119 :bind 120 ( 121 :map global-map 122 ("C-c p p" . kakafarm/percent-read) 123 ("C-c C-s" . (lambda (beg end) 124 (interactive (list (region-beginning) (region-end))) 125 126 (sort-lines '() 127 beg 128 end))) 129 130 ;; (";" . #'kakafarm/easy-underscore) 131 ) 132 :config 133 (set-register ?i `(file . ,(locate-user-emacs-file "init.el"))) 134 '(ido-mode t) 135 ;; (tab-bar-mode) 136 :custom 137 (inhibit-startup-screen t) 138 ) 139 140 (use-package ement 141 :custom 142 (ement-auto-sync nil) 143 (ement-save-sessions t) 144 ) 145 146 (use-package erc 147 :defer t 148 :custom 149 (erc-server "irc.libera.chat") 150 (erc-nick "kakafarm") 151 (erc-track-shorten-start 8) 152 (erc-kill-buffer-on-part t) 153 (erc-auto-query 'bury) 154 (erc-autojoin-channels-alist '((libera-kakafarm "#systemcrafters"))) 155 :bind 156 (("C-c i r c" . (lambda () 157 (interactive) 158 (erc-tls :id 'libera-kakafarm)))) 159 ;; :config 160 ;; (erc-tls :id 'libera-kakafarm) 161 ) 162 163 (use-package ffap 164 :defer t 165 :bind 166 ( 167 ("C-c f a p" . ffap-menu) 168 ("C-c f f a p" . kakafarm/ffap-browse-urls) 169 )) 170 171 (use-package fontset 172 :defer t 173 :config 174 (set-fontset-font t 'hebrew "Noto Sans Hebrew")) 175 176 (use-package geiser 177 :defer t 178 :after (scheme-mode) 179 :config 180 '((define-key 'geiser-mode-map) 181 (setq geiser-active-implementations '(guile)) 182 (global-unset-key "C-c C-a") 183 (unbind-key "C-c C-e" geiser-mode-map) 184 (unbind-key "C-c C-a" geiser-mode-map)) 185 :custom 186 (geiser-default-implementation 'guile) 187 (geiser-mode-auto-p nil) 188 (geiser-repl-per-project-p t) 189 ) 190 191 (use-package greader 192 :defer t 193 :commands (greader-mode) 194 :config 195 (add-hook 'greader-mode-hook 196 'kakafarm/sentence-end-double-nilify-for-read-only-buffers) 197 :bind 198 ( 199 :map greader-mode-map 200 ("C-c g b" . (lambda () (interactive) (kakafarm/greader-estimate-reading-time))) 201 ("C-c g r" . (lambda () (interactive) (kakafarm/greader-estimate-reading-time (point)))) 202 ) 203 :hook ( 204 Custom-mode 205 Info-mode 206 Man-mode 207 elfeed-show 208 elfeed-show-mode 209 elpher 210 eww-after-render 211 fundamental-mode 212 help-mode 213 helpful-mode 214 lisp-mode 215 nov-mode 216 ;; text-mode ;; It fucks up my magit commit message C-c C-c. 217 w3m-mode 218 ) 219 ) 220 221 (use-package helm 222 :defer t 223 :bind 224 ( 225 :map global-map 226 ("M-x" . helm-M-x) 227 ) 228 ) 229 230 (use-package helpful 231 :defer t 232 :bind 233 ( 234 ("C-h f" . helpful-function) 235 ("C-h k" . helpful-key) 236 ("C-h m" . helpful-mode) 237 ("C-h v" . helpful-variable) 238 ) 239 ) 240 241 (use-package howm 242 :init 243 (setq howm-directory "~/mine/howm/") 244 (setq howm-home-directory howm-directory) 245 (setq howm-file-name-format "%Y-%m-%d-%H%M%S.org") 246 (setq howm-view-title-header "*") 247 (setq howm-dtime-format "<%Y-%m-%d %a %H:%M>") 248 (setq howm-prefix (kbd "C-c ;")) 249 :bind* 250 ("C-c ; ;" . howm-menu) 251 ) 252 253 (use-package icomplete 254 :defer t 255 :config 256 ;; Display completions continuously in minibuffer. 257 (icomplete-mode 1)) 258 259 (use-package info 260 :defer t 261 :custom 262 (Info-additional-directory-list '("~/infopath/"))) 263 264 (use-package kakafarm 265 :demand t 266 :bind 267 ( 268 :map global-map 269 ("C-c C-w" . kakafarm/multi-vterm-weechat) 270 ("C-c w" . kakafarm/multi-vterm-weechat) 271 ) 272 ) 273 274 (use-package magit 275 :custom 276 (magit-diff-refine-hunk t) 277 (magit-diff-refine-ignore-whitespace nil) 278 ) 279 280 (use-package magit-todos 281 :defer t 282 :after magit 283 :config 284 (magit-todos-mode 1) 285 :custom 286 (magit-todos-insert-after '(bottom) nil nil "Changed by setter of obsolete option `magit-todos-insert-at'") 287 ) 288 289 (use-package mastodon 290 :defer t 291 :init 292 ;; (setq mastodon-active-user "kakafarm" 293 ;; mastodon-instance-url "https://emacs.ch/") 294 (setq mastodon-active-user "kakafarm" 295 mastodon-instance-url "https://shitposter.world/") 296 ) 297 298 (use-package menu-bar 299 :custom 300 (menu-bar-mode nil) 301 ) 302 303 '(use-package mode-line 304 :custom 305 (mode-line-percent-position '(6 "%q")) 306 ) 307 308 (use-package modus-themes 309 :defer t 310 :init 311 (setq modus-themes-mode-line '(borderless 312 accented 313 ;; 3d 314 padded 315 ;; moody 316 ) 317 modus-themes-region '(;;accented 318 bg-only 319 ;;no-extend 320 ) 321 modus-themes-paren-match '(bold 322 intense) 323 ;;modus-themes-syntax '(alt-syntax) 324 modus-themes-scale-headings t 325 modus-themes-org-blocks 'tinted-background) 326 (load-theme 'modus-vivendi) 327 ;;(load-theme 'wheatgrass) 328 ) 329 330 (use-package mule 331 :defer t 332 :config 333 ;;; https://emacs.stackexchange.com/questions/34322/set-default-coding-system-utf-8 334 (set-language-environment "utf-8")) 335 336 (use-package multi-vterm 337 ;; :demand t 338 :bind 339 ( 340 :map global-map 341 ("C-c <RET> <RET>" . multi-vterm) 342 ("C-c m m" . multi-vterm) 343 :map vterm-mode-map 344 ("C-q" . vterm-send-next-key) 345 ) 346 :commands 347 ( 348 multi-vterm 349 multi-vterm-buffer-exist-p 350 ) 351 ) 352 353 '(use-package nano-tts 354 :defer t 355 :hook (eww-after-render nov-mode Info-mode) 356 :custom 357 (nano-tts-words-per-minute 225) 358 ) 359 360 (use-package nov 361 :defer t 362 :mode ((rx ".epub" string-end) . nov-mode)) 363 364 (use-package fundamental 365 :mode ((rx ".el" string-end) . fundamental-mode)) 366 367 '(use-package opml-to-elfeed-feeds 368 :custom 369 (opml-to-elfeed-feeds-elfeed-feeds nil t) 370 ) 371 372 (use-package orderless 373 :defer t 374 :custom 375 (completion-styles 376 '(orderless 377 basic)) 378 (completion-category-overrides 379 '((file (styles 380 basic 381 partial-completion))))) 382 383 (use-package org 384 :defer t 385 :config 386 (org-babel-do-load-languages 387 'org-babel-load-languages 388 '( 389 (emacs-lisp . t) 390 (scheme . t) 391 (shell . t) 392 )) 393 :custom 394 (org-agenda-files (list (expand-file-name "~/mine/org/") 395 (expand-file-name "~/Documents/notes/"))) 396 (org-default-notes-file (expand-file-name "~/mine/org/org.org")) 397 (org-directory (expand-file-name "~/mine/org/")) 398 (org-export-use-babel nil) 399 (org-html-postamble t) 400 (org-html-postamble-format '(("en" "<p class=\"author\">Author: %a</p>\12<p class=\"date\">Date: %d</p>\12<p class=\"creator\">%c</p>\12<p class=\"validation\">%v</p>"))) 401 (org-structure-template-alist '( 402 ("a" . "export ascii") 403 ("c" . "center") 404 ("C" . "comment") 405 ("e" . "example") 406 ("E" . "export") 407 ("h" . "export html") 408 ("l" . "export latex") 409 ("q" . "quote") 410 ("s" . "src") 411 ("v" . "verse") 412 ("g" . "src scheme :session moo :results output :tangle eopl3.scm") 413 ("z" . "src scheme") 414 )) 415 ) 416 417 (use-package org-roam 418 :defer t 419 :bind (("C-c n l" . org-roam-buffer-toggle) 420 ("C-c n f" . org-roam-node-find) 421 ("C-c n i" . org-roam-node-insert)) 422 :config 423 ;;(org-roam-db-autosync-enable) 424 ;;(org-roam-db-autosync-mode) 425 :custom 426 (org-roam-directory "~/mine/roam/") 427 (org-roam-graph-viewer '(lambda (x) nil)) 428 ) 429 430 (use-package paredit 431 :defer t 432 :hook (emacs-lisp-mode 433 lisp-mode 434 scheme-mode)) 435 436 (use-package paren 437 :defer t 438 :config 439 (show-paren-mode)) 440 441 ;; XXX: Disabled. 442 '(use-package parinfer 443 :defer t 444 :hook (emacs-lisp-mode 445 lisp-mode 446 scheme-mode)) 447 448 '(use-package perspective 449 :init 450 (persp-mode) 451 :bind 452 ("C-c M-b" . persp-list-buffers) 453 :custom 454 (persp-mode-prefix-key (kbd "C-c M-p"))) 455 456 (use-package rainbow-delimiters 457 :defer t 458 :config 459 (rainbow-delimiters-mode)) 460 461 (use-package recentf 462 :defer t 463 :config 464 (recentf-mode 1) 465 :bind (("C-S-t" . recentf-open-files) 466 ("C-c t" . recentf-open-files) 467 ("C-c l" . dictionary-lookup-definition)) 468 :custom 469 (recentf-max-menu-items 100) 470 (recentf-max-saved-items 100) 471 ) 472 473 (use-package scheme-mode 474 :defer t 475 :config 476 ;; TODO: Did it even work?! 477 (add-hook 'scheme-mode-hook 'hs-minor-mode) 478 (progn ;; For SRFI-253: 479 (put 'define-checked 'scheme-indent-function 1) 480 (put 'lambda-checked 'scheme-indent-function 1)) 481 :mode (rx "." (| "scm" "sxml" "skb") string-end) 482 ;; :bind (:map scheme-mode-map 483 ;; ("C-c C-e" . arei-mode-map) 484 ;; ("C-c C-a" . arei)) 485 ) 486 487 (use-package shr 488 :custom 489 (shr-width 75) 490 (shr-use-fonts nil) 491 (shr-use-colors nil) 492 (shr-indentation 2) 493 ) 494 495 (use-package simple 496 :defer 497 :init 498 (advice-add 'kill-ring-save 499 :before 500 'kakafarm/pulse-current-region) 501 :config 502 (column-number-mode) 503 ;; Don't want tabs in any of my source files. 504 (setq-default indent-tabs-mode 505 nil) 506 '(advice-add 'scratch-buffer 507 :after 508 (lambda () "Switch to text-mode." 509 (text-mode))) 510 :custom 511 (global-visual-line-mode t) 512 ) 513 514 (use-package undo-tree 515 :defer t 516 :config 517 (global-undo-tree-mode 1) 518 (setq undo-tree-auto-save-history nil) 519 :bind 520 ("C-x u" . undo-tree-visualize)) 521 522 (use-package vterm 523 :custom 524 (vterm-environment '("LC_ALL=en_IL.utf8")) 525 ) 526 527 '(use-package whitespace-cleanup 528 :custom 529 (global-whitespace-cleanup-mode t) 530 ) 531 532 (use-package window 533 :defer t 534 :config 535 '(advice-add 'recenter-top-bottom 536 :around 537 'kakafarm/recenter-top-bottom)) 538 539 (progn 540 ;;; Emacs From Scratch 541 ;;; https://systemcrafters.net/emacs-from-scratch/ 542 ;;; https://www.youtube.com/playlist?list=PLEoMzSkcN8oPH1au7H6B7bBJ4ZO7BXjSZ 543 544 (setq visible-cursor t 545 visible-bell t) 546 547 ;;; The Basics of Emacs Configuration 548 ;;; https://systemcrafters.net/emacs-from-scratch/basics-of-emacs-configuration/ 549 ;;; https://www.youtube.com/watch?v=OaF-N-FuGtc 550 551 (tool-bar-mode -1) 552 (scroll-bar-mode -1) 553 (menu-bar-mode -1) 554 ;; (global-display-line-numbers-mode 1) 555 (hl-line-mode 1) 556 (blink-cursor-mode 1) 557 558 ;;; https://systemcrafters.net/emacs-from-scratch/the-best-default-settings/ 559 ;;; https://www.youtube.com/watch?v=51eSeqcaikM 560 ;;(recentf-mode 1) 561 (setq history-length 25) 562 (savehist-mode 1) 563 (save-place-mode 1)) 564 565 (progn 566 ;;; Load org-roam stuff. 567 568 (defvar kakafarm/org-roam-my-publish-time 0 569 ;; TODO: Write docstring. 570 "TODO" 571 ) 572 573 (setq org-publish-project-alist 574 `(("roam" 575 :base-directory "~/mine/roam/publish/" 576 :auto-sitemap t 577 :sitemap-function kakafarm/org-roam-sitemap 578 :sitemap-title "Roam Notes" 579 :publishing-function kakafarm/org-roam-publication-wrapper 580 :publishing-directory "~/mine/roam-export" 581 :section-number nil 582 :table-of-contents nil 583 :include ,(directory-files "~/mine/roam/publish/" t ".*.org$") 584 :html-head "<link rel=\"stylesheet\" href=\"/index.css\" type=\"text/css\">"))) 585 586 (setq org-roam-graph-link-builder 587 'kakafarm/org-roam-custom-link-builder) 588 589 (add-hook 'org-roam-graph-generation-hook 590 (lambda (dot svg) 591 (if (< (- (cadr (current-time)) 592 kakafarm/org-roam-project-publish-time) 593 5) 594 (progn 595 (copy-file svg 596 "~/mine/roam-export/sitemap.svg" 597 't) 598 (setq kakafarm/org-roam-project-publish-time 599 0)))))) 600 601 (setq gc-cons-threshold (* 200 1024 1024)) 602 (put 'narrow-to-region 'disabled nil) 603 (put 'upcase-region 'disabled nil) 604 (put 'narrow-to-page 'disabled nil) 605 (put 'scroll-left 'disabled nil)