178 lines
6.4 KiB
EmacsLisp
178 lines
6.4 KiB
EmacsLisp
;;; ~/.config/doom/config.el -*- lexical-binding: t; -*-
|
|
|
|
;; (defvar xdg-data (getenv "XDG_DATA_HOME"))
|
|
;; (defvar xdg-bin (getenv "XDG_BIN_HOME"))
|
|
;; (defvar xdg-cache (getenv "XDG_CACHE_HOME"))
|
|
;; (defvar xdg-config (getenv "XDG_CONFIG_HOME"))
|
|
|
|
(add-to-list 'default-frame-alist '(inhibit-double-buffering . t))
|
|
|
|
(setq user-full-name "Colin Powell"
|
|
user-mail-address "colin@onec.me"
|
|
|
|
doom-theme 'nimbus
|
|
doom-font (font-spec :family "Iosevka" :size 16)
|
|
doom-big-font (font-spec :family "Iosevka" :size 22))
|
|
|
|
;;
|
|
;; Host-specific config
|
|
|
|
(pcase (system-name)
|
|
("halimede"
|
|
(font-put doom-font :size 9)) ; smaller display
|
|
("triton"
|
|
;; I've swapped these keys on my keyboard
|
|
(setq x-super-keysym 'meta
|
|
x-meta-keysym 'super)))
|
|
|
|
(when IS-LINUX
|
|
(font-put doom-font :weight 'semi-light))
|
|
(when IS-MAC
|
|
(setq ns-use-thin-smoothing t))
|
|
|
|
|
|
;;
|
|
;; Keybinds
|
|
|
|
(map! :m "M-j" '+hlissner:multi-next-line
|
|
:m "M-k" '+hlissner:multi-previous-line
|
|
|
|
;; Easier window movement
|
|
:n "C-h" 'evil-window-left
|
|
:n "C-j" 'evil-window-down
|
|
:n "C-k" 'evil-window-up
|
|
:n "C-l" 'evil-window-right
|
|
|
|
(:map evil-treemacs-state-map
|
|
"C-h" 'evil-window-left
|
|
"C-l" 'evil-window-right)
|
|
|
|
(:when IS-LINUX
|
|
"s-x" #'execute-extended-command
|
|
"s-;" #'eval-expression
|
|
;; use super for window/frame navigation/manipulation
|
|
"s-w" #'delete-window
|
|
"s-W" #'delete-frame
|
|
"s-n" #'+default/new-buffer
|
|
"s-N" #'make-frame
|
|
"s-q" (if (daemonp) #'delete-frame #'evil-quit-all)
|
|
;; Restore OS undo, save, copy, & paste keys (without cua-mode, because
|
|
;; it imposes some other functionality and overhead we don't need)
|
|
"s-z" #'undo
|
|
"s-c" (if (featurep 'evil) #'evil-yank #'copy-region-as-kill)
|
|
"s-v" #'yank
|
|
"s-s" #'save-buffer
|
|
;; Buffer-local font scaling
|
|
"s-+" (λ! (text-scale-set 0))
|
|
"s-=" #'text-scale-increase
|
|
"s--" #'text-scale-decrease
|
|
;; Conventional text-editing keys
|
|
"s-a" #'mark-whole-buffer
|
|
:gi [s-return] #'+default/newline-below
|
|
:gi [s-S-return] #'+default/newline-above
|
|
:gi [s-backspace] #'doom/backward-kill-to-bol-and-indent)
|
|
|
|
:leader
|
|
(:prefix "f"
|
|
:desc "Find file in dotfiles" "t" #'+hlissner/find-in-dotfiles
|
|
:desc "Browse dotfiles" "T" #'+hlissner/browse-dotfiles)
|
|
(:prefix "t"
|
|
:desc "Toggle visual line mode" "v" #'visual-line-mode
|
|
:desc "Toggle auto fill mode" "a" #'auto-fill-mode
|
|
:desc "Switch themes" "t" #'counsel-load-theme)
|
|
(:prefix "o"
|
|
:desc "Elfeed feed reader" "f" #'elfeed)
|
|
(:prefix "p"
|
|
:desc "Black buffer" "b" #'blacken-buffer)
|
|
(:prefix "y"
|
|
:desc "Yank pop!" "p" #'counsel-yank-pop
|
|
:desc "Git yank link" "g" #'git-link))
|
|
|
|
;; app/rss
|
|
(add-hook! 'elfeed-show-mode-hook (text-scale-set 1.5))
|
|
|
|
;;
|
|
;; Modules
|
|
|
|
(setq +workspaces-switch-project-function #'ignore
|
|
+format-on-save-enabled-modes '(python-mode)
|
|
+pretty-code-enabled-modes '(emacs-lisp-mode org-mode))
|
|
|
|
;; app/rss
|
|
(add-hook! 'elfeed-show-mode-hook (text-scale-set 2))
|
|
|
|
;; emacs/eshell
|
|
(after! eshell
|
|
(set-eshell-alias!
|
|
"f" "(other-window 1) && find-file $1"
|
|
"l" "ls -lh"
|
|
"d" "dired $1"
|
|
"gl" "(call-interactively 'magit-log-current)"
|
|
"gs" "magit-status"
|
|
"gc" "magit-commit"))
|
|
|
|
;; tools/magit
|
|
(setq magit-repository-directories '(("~/work" . 2))
|
|
magit-save-repository-buffers nil
|
|
transient-values '((magit-commit "--gpg-sign=5F6C0EA160557395")
|
|
(magit-rebase "--autosquash" "--gpg-sign=5F6C0EA160557395")
|
|
(magit-pull "--rebase" "--gpg-sign=5F6C0EA160557395")))
|
|
|
|
;; lang/org
|
|
(setq org-directory (expand-file-name "~/org/")
|
|
org-journal-dir "~/org/journal/")
|
|
;; Some appearance things
|
|
(setq org-agenda-block-separator ""
|
|
org-fontify-whole-heading-line t
|
|
org-fontify-done-headline t
|
|
org-fontify-quote-and-verse-blocks t
|
|
org-pretty-entities t
|
|
org-ellipsis " ▼ "
|
|
|
|
;; The standard unicode characters are usually misaligned depending on the
|
|
;; font. This bugs me. Markdown #-marks for headlines are more elegant.
|
|
org-bullets-bullet-list '("#"))
|
|
|
|
(after! org
|
|
(setq org-capture-templates '(("i" "Send to inbox" entry (file+headline "~/org/inbox.org" "Inbox") "* TODO %?\n")
|
|
("w" "Work diary entry" entry (file "~/org/work_diary.org")
|
|
"* %u\n%?\n"))
|
|
org-use-tag-inheritance nil
|
|
org-tags-exclude-from-inheritance '("PROJECT" "SPRINT")
|
|
;org-stuck-projects '("+PROJECT/-MAYBE-DONE" ("TODO" "NEXT") nil "\\<IGNORE\\>")
|
|
;org-tag-alist '(("PROJECT" . ?p) ("@home" . ?h) ("@night" . ?n) ("@selectp" . ?s)
|
|
; ("@errand" . ?e) ("@read" . ?r) ("@work" . ?w) ("@family" . ?f))
|
|
;org-modules '(org-drill org-clock org-id org-info org-habit org-protocol org-annotate-file
|
|
; org-eval org-expiry org-contacts org-man org-notmuch org-collector org-panel
|
|
; org-screen org-toc)
|
|
|
|
org-refile-targets '(("~/org/todo.org" :maxlevel . 2)
|
|
("~/org/someday.org" :maxlevel . 2)
|
|
("~/org/town.org" :maxlevel . 2)
|
|
("~/org/personal.org" :maxlevel . 2)
|
|
("~/org/elation.org" :maxlevel . 2))
|
|
)
|
|
|
|
(setq org-todo-keywords '((sequence "TODO(t)" "NEXT(n)" "WAITING(w)" "MAYBE(m)" "|" "DONE(d)"))))
|
|
|
|
;; Org specific keybindings
|
|
(map! :leader
|
|
(:prefix "a"
|
|
:desc "Org Agenda" "o" #'org-agenda
|
|
:desc "Org open link" "l" #'org-open-at-point
|
|
:desc "Sync gcal with org" "g" #'org-gcal-sync
|
|
:desc "Set task deadline" "d" #'org-deadline
|
|
:desc "Schedule task" "s" #'org-schedule
|
|
:desc "New journal entry" "j" #'org-journal-new-entry
|
|
:desc "Org set property" "p" #'org-set-progerty
|
|
:desc "Save all org buffers" "a" #'org-save-all-org-buffers
|
|
:desc "Org todo" "t" #'org-todo
|
|
:desc "Org set tags" "T" #'org-set-tags-command))
|
|
|
|
;;; Setup sending email with msmtp
|
|
(setq send-mail-function 'sendmail-send-it
|
|
sendmail-program "/usr/local/bin/msmtp"
|
|
mail-specify-envelope-from t
|
|
message-sendmail-envelope-from 'header
|
|
mail-envelope-from 'header)
|