config.el 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. ;;; ~/.config/doom/config.el -*- lexical-binding: t; -*-
  2. ;; (defvar xdg-data (getenv "XDG_DATA_HOME"))
  3. ;; (defvar xdg-bin (getenv "XDG_BIN_HOME"))
  4. ;; (defvar xdg-cache (getenv "XDG_CACHE_HOME"))
  5. ;; (defvar xdg-config (getenv "XDG_CONFIG_HOME"))
  6. (add-to-list 'default-frame-alist '(inhibit-double-buffering . t))
  7. (setq user-full-name "Colin Powell"
  8. user-mail-address "colin@unbl.ink")
  9. ;;
  10. ;; Keybinds
  11. ;;:m "M-j" '+hlissner:multi-next-line
  12. ;;:m "M-k" '+hlissner:multi-previous-line
  13. (map! ;; Easier window movement
  14. :n "C-h" 'evil-window-left
  15. :n "C-j" 'evil-window-down
  16. :n "C-k" 'evil-window-up
  17. :n "C-l" 'evil-window-right
  18. (:map evil-treemacs-state-map
  19. "C-h" 'evil-window-left
  20. "C-l" 'evil-window-right)
  21. (:when IS-LINUX
  22. "s-x" #'execute-extended-command
  23. "s-;" #'eval-expression
  24. ;; use super for window/frame navigation/manipulation
  25. "s-w" #'delete-window
  26. "s-W" #'delete-frame
  27. "s-n" #'+default/new-buffer
  28. "s-j" #'org-move-subtree-down
  29. "s-k" #'org-move-subtree-up
  30. "s-N" #'make-frame
  31. "s-q" (if (daemonp) #'delete-frame #'evil-quit-all)
  32. ;; Restore OS undo, save, copy, & paste keys (without cua-mode, because
  33. ;; it imposes some other functionality and overhead we don't need)
  34. "s-z" #'undo
  35. "s-c" (if (featurep 'evil) #'evil-yank #'copy-region-as-kill)
  36. "s-v" #'yank
  37. "s-s" #'save-buffer
  38. ;; Buffer-local font scaling
  39. "s-+" (λ! (text-scale-set 0))
  40. "s-=" #'text-scale-increase
  41. "s--" #'text-scale-decrease
  42. ;; Conventional text-editing keys
  43. "s-a" #'mark-whole-buffer
  44. :gi [s-return] #'+default/newline-below
  45. :gi [s-S-return] #'+default/newline-above
  46. :gi [s-backspace] #'doom/backward-kill-to-bol-and-indent)
  47. :leader
  48. (:prefix "f"
  49. :desc "Find file in dotfiles" "t" #'+hlissner/find-in-dotfiles
  50. :desc "Browse dotfiles" "T" #'+hlissner/browse-dotfiles)
  51. (:prefix "t"
  52. :desc "Switch themes" "t" #'load-theme)
  53. (:prefix "o"
  54. :desc "Elfeed feed reader" "f" #'elfeed
  55. :desc "Hckrnews" "h" #'hackernews
  56. :desc "Lobste.rs" "l" #'ivy-lobsters)
  57. (:prefix "b"
  58. :desc "Black format buffer" "f" #'blacken-buffer
  59. :desc "isort buffer" "I" #'py-isort-buffer
  60. :desc "Links in buffer" "l" #'ace-link-org)
  61. (:prefix "s"
  62. :desc "Search project TODOs" "t" #'+ivy/tasks
  63. :desc "Search the web" "w" #'web-search
  64. :desc "Goto URL in eww" "u" #'eww-browse-url
  65. :desc "Search in eww" "3" #'eww-search-words
  66. :desc "Search all the things" "g" #'deadgrep))
  67. ;; app/search
  68. (after! web-search
  69. (push '("Searx" "http://search.unbl.ink/?q=%s")
  70. web-search-providers)
  71. (setq web-search-default-provider "Searx"))
  72. (def-package! org-alert
  73. :commands (org-alert-enable))
  74. (after! org-alert-mode
  75. (setq alert-default-style 'libnotify))
  76. ;; enable smog writing analysis
  77. ;;(use-package smog
  78. ;; :config (setq smog-command "style -L en"))
  79. ;;
  80. ;; Modules
  81. (setq +workspaces-switch-project-function #'ignore
  82. +format-on-save-enabled-modes '(python-mode)
  83. +pretty-code-enabled-modes '(emacs-lisp-mode org-mode))
  84. ;; app/eglot
  85. ;; Back to eglot ...
  86. (add-hook 'foo-mode-hook 'eglot-ensure)
  87. ;; app/mpdel
  88. ;;
  89. (setq libmpdel-hostname "play.unbl.ink")
  90. ;; app/rss
  91. (add-hook! 'elfeed-show-mode-hook (text-scale-set 1.5))
  92. (setq rmh-elfeed-org-files (list "~/org/elfeed.org")
  93. elfeed-search-filter "@1-week-ago +unread ")
  94. (add-hook 'prog-mode-hook #'goto-address-mode) ;; Linkify links!
  95. ;; tools/deft
  96. (setq deft-extensions '("org"))
  97. (setq deft-directory "~/org")
  98. ;; tools/magit
  99. (setq magit-repository-directories '(("~/work" . 2))
  100. magit-save-repository-buffers nil)
  101. ;;; It is the opposite of fill-paragraph
  102. (defun unfill-paragraph ()
  103. "Takes a multi-line paragraph and makes it into a single line of text."
  104. (interactive)
  105. (let ((fill-column (point-max)))
  106. (fill-paragraph nil)))
  107. ;; Handy key definition
  108. (define-key global-map "\M-z" 'unfill-paragraph)
  109. ; A few nice to haves
  110. (nyan-mode) ; a rainbow cat, why not
  111. (beacon-mode) ; show me where my cursor is bouncing around to
  112. (add-hook 'after-init-hook #'global-emojify-mode) ; emoji, sigh
  113. (add-to-list 'auto-mode-alist '("\\.plantuml\\'" . planetuml-mode))
  114. (load! "+ui.el")
  115. (load! "+org") ;; Org mode stuff like todos and rebindings
  116. (load! "+org-cal")
  117. (load! "+nov") ;; nov.el epub mode settings
  118. (load! "+mail") ;; Mail stuff
  119. (load! "+eshell")
  120. (load! "+mpd")
  121. (load! "+ranger")
  122. (load! "+mastodon")
  123. (load! "+wttrin") ;; Weather config
  124. (load! "+elfeed") ;; This runs a background web process ...
  125. ;; findout timezone location strings at http://worldtime.io
  126. (setq display-time-world-list '(("America/Los_Angeles" "San Francisco")
  127. ("America/Tegucigalpa" "Tegucigalpa")
  128. ("America/New_York" "New York")
  129. ("Europe/London" "London")
  130. ("Europe/Warsaw" "Warsaw")
  131. ("Europe/Kiev" "Lviv")))
  132. (load! "beancount")
  133. (require 'beancount)
  134. (add-to-list 'auto-mode-alist '("\\.beancount\\'" . beancount-mode))