doom.d/config.el

146 lines
6.0 KiB
EmacsLisp
Raw Normal View History

2019-12-03 23:21:32 +01:00
;;; .doom.d/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here
2019-12-04 04:42:19 +01:00
;;
2020-01-06 10:20:20 +01:00
;; Load appearance configuration
(load! "+ui")
2022-09-24 23:15:25 +02:00
;; Load custom keybindings
(load! "+keybindings")
2019-12-04 04:43:02 +01:00
;; Set projects directories
2021-11-09 16:31:18 +01:00
(setq projectile-project-search-path '(("~/Projects" . 2)
("~/Documents/Work" . 1)
("~/Documents/Papers" . 0)
("~/Documents/Typesetting" . 1)
("~/Documents/Paperwork" . 1)
("~/Documents/Typesetting" . 1)
2021-11-09 16:31:18 +01:00
("~/Documents/Uni" . 3)
("~/Repos" . 1)
2022-09-18 20:12:58 +02:00
"~/.dotfiles"
"~/Notes"))
; Auto cleanup recentf
2020-06-20 02:08:47 +02:00
(setq recentf-auto-cleanup 300)
2022-09-18 20:12:58 +02:00
; Save backup files to ~/.cache and autosave files to ~/.cache/emacs
(setq backup-directory-alist `(("." . "~/.cache"))
2021-09-07 13:31:05 +02:00
auto-save-list-file-prefix (concat "~/.cache"))
;; Load org configuration
2022-09-11 20:57:45 +02:00
(setq org-directory "~/Notes")
(after! org (load! "+org"))
2022-03-11 11:54:01 +01:00
;; Disable completion and line numbers in Markdown
(add-hook 'markdown-mode-hook (lambda () (display-line-numbers-mode -1)))
(after! markdown
2022-03-11 11:54:01 +01:00
(set-company-backend! 'markdown-mode nil))
;; Reload file from disk without confirmation
(defun revert-buffer-no-confirm ()
(interactive)
(revert-buffer :ignore-auto :noconfirm))
2020-01-06 10:20:20 +01:00
;; Align columns in CSV mode
(add-hook 'csv-mode-hook 'csv-align-mode)
2023-02-23 00:01:52 +01:00
(add-hook 'csv-mode-hook 'csv-header-line)
;; Close compilation buffer if successful
(setq compilation-finish-functions
(lambda (buf str)
(if (null (string-match ".*exited abnormally.*" str))
(progn
(run-at-time
"0.5 sec" nil 'delete-windows-on
(get-buffer-create "*compilation*"))
(message "No Compilation Errors!")))))
2020-07-10 00:02:43 +02:00
;; Map leader key for major mode to ,
(setq doom-localleader-key ",")
2020-10-06 01:48:18 +02:00
;; Disable company mode in Nix
(setq-hook! 'nix-mode-hook company-idle-delay nil)
;; Trigger flycheck after save
(setq flycheck-check-syntax-automatically '(save))
;; Ignore development databases folders
(after! lsp-mode
(add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\.mysql\\'")
(add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\.pgdata\\'"))
2021-03-23 23:52:27 +01:00
;; Ignore empty files
2021-04-01 16:42:22 +02:00
(after! projectile
(add-to-list 'projectile-globally-ignored-files ".gitkeep")
(add-to-list 'projectile-globally-ignored-files ".envrc")
(add-to-list 'projectile-globally-ignored-files ".project")
(add-to-list 'projectile-globally-ignored-directories ".direnv")
(add-to-list 'projectile-globally-ignored-directories ".ipynb_checkpoints"))
;; Associate polymode to R markdown files
(add-to-list 'auto-mode-alist '("\\.[rR]md\\'" . poly-markdown+R-mode))
2021-10-20 10:42:07 +02:00
;; Set clangd as C/C++ LSP
(setq lsp-clients-clangd-args '("-j=3"
"--background-index"
"--clang-tidy"
"--completion-style=detailed"
"--header-insertion=never"
"--header-insertion-decorators=0"))
(after! lsp-clangd (set-lsp-priority! 'clangd 2))
2022-05-08 16:06:46 +02:00
;; Use relative line numbers (Usage: number <j/k>)
(setq display-line-numbers-type 'relative)
2022-08-13 14:47:42 +02:00
;; Use pass as auth-source
(add-to-list 'auth-sources 'password-store)
;; Set up wallabag
(after! wallabag
(setq wallabag-host "https://wallabag.coolneng.duckdns.org"
wallabag-username "coolneng"
wallabag-password (auth-source-pass-get 'secret "api/wallabag")
wallabag-clientid (auth-source-pass-get "clientid" "api/wallabag")
wallabag-secret (auth-source-pass-get "api-secret" "api/wallabag")
wallabag-show-sidebar 't
2022-09-12 01:53:41 +02:00
wallabag-show-entry-switch 'switch-to-buffer
url-automatic-caching t)
2022-08-13 14:47:42 +02:00
(add-hook 'wallabag-after-render-hook 'wallabag-search-update-and-clear-filter))
2022-09-18 19:03:52 +02:00
(add-hook! 'doom-real-buffer-functions
(defun +rss-buffer-p (buf)
(string-match-p "^\\*wallabag" (buffer-name buf))))
(defvar +wallabag-workspace-name "*wallabag*")
(defun =wallabag ()
"Activate (or switch to) `wallabag' in its workspace."
(interactive)
(if (modulep! :ui workspaces)
(progn
(+workspace-switch +wallabag-workspace-name t)
(doom/switch-to-scratch-buffer)
(wallabag)
(+workspace/display))
(setq +wallabag--wconf (current-window-configuration))
(delete-other-windows)
(switch-to-buffer (doom-fallback-buffer))
(wallabag)))
2022-08-15 18:03:18 +02:00
;; Set up elfeed
(after! elfeed
(setq elfeed-use-curl t)
(setq elfeed-feeds (list
2022-09-18 19:04:26 +02:00
(list "fever+https://coolneng@rss.coolneng.duckdns.org"
:api-url "https://rss.coolneng.duckdns.org/fever/"
:password (auth-source-pass-get 'secret "api/miniflux"))))
2022-08-15 18:03:18 +02:00
(setq elfeed-sort-order 'ascending
2022-09-05 15:30:59 +02:00
elfeed-search-filter "@all +unread"
elfeed-goodies/tag-column-width 0)
2022-08-15 18:03:18 +02:00
(elfeed-protocol-enable)
2023-02-23 00:02:15 +01:00
(add-hook! 'elfeed-search-mode-hook 'elfeed-update)
;; Use different font and show article in fullscreen
(setq elfeed-show-mode-hook
(lambda ()
(set-face-attribute 'variable-pitch (selected-frame) :font (font-spec :family "Bitter" :size 28))
(setq fill-column 120)
(setq elfeed-show-entry-switch #'my-show-elfeed)))
(defun my-show-elfeed (buffer)
(with-current-buffer buffer
(setq buffer-read-only nil)
(goto-char (point-min))
(re-search-forward "\n\n")
(fill-individual-paragraphs (point) (point-max))
(setq buffer-read-only t)
(setq visual-fill-column-center-text t)
(visual-fill-column-mode 1))
(switch-to-buffer buffer)))
2022-09-18 20:25:59 +02:00
;; Set up the mail stack
(after! mu4e (load! "+mail"))
2022-10-01 00:54:27 +02:00
;; HACK Enable AOT native compilation
(setq native-comp-deferred-compilation nil)
(after! (doom-packages straight)
(setq straight--native-comp-available t))
;; Use PlatformIO for Arduino development
(use-package! platformio-mode
:after cc-mode
:config
(add-hook! 'c++-mode-hook (platformio-conditionally-enable)))