;;; .doom.d/config.el -*- lexical-binding: t; -*- ;; Place your private configuration here ;; ;; Load appearance configuration (load! "+ui") ;; Set projects directories (setq projectile-project-search-path '(("~/Projects" . 2) ("~/Documents/Work" . 1) ("~/Documents/Papers" . 0) ("~/Documents/Typesetting" . 1) ("~/Documents/Paperwork" . 1) ("~/Documents/Typesetting" . 1) ("~/Documents/Uni" . 3) ("~/Repos" . 1) "~/.dotfiles")) ; Auto cleanup recentf (setq recentf-auto-cleanup 300) ; Save backup files to ~/.cache and autosave files to ~/.cache/emacs (setq backup-directory-alist `(("." . "~/.cache")) auto-save-list-file-prefix (concat "~/.cache")) ;; Load org configuration (after! org (load! "+org")) ;; Enter writeroom and disable completion and line numbers in Markdown (add-hook 'markdown-mode-hook (lambda () (display-line-numbers-mode -1))) (after! markdown (set-company-backend! 'markdown-mode nil) (add-hook 'markdown-mode-hook 'global-writeroom-mode)) ;; Reload file from disk without confirmation (defun revert-buffer-no-confirm () (interactive) (revert-buffer :ignore-auto :noconfirm)) ;; Select target in Makefile compilation as default (map! :leader :n "c c" #'makefile-executor-execute-project-target) ;; Align columns in CSV mode (add-hook 'csv-mode-hook 'csv-align-mode) ;; 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!"))))) ;; Enable writeroom for text modes (setq writeroom-major-modes '(markdown-mode org-mode)) ;; Map leader key for major mode to , (setq doom-localleader-key ",") ;; Show matching parenthesis on the minibuffer (after! smartparens (show-smartparens-global-mode t)) ;; 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\\'")) ;; Ignore empty files (after! projectile (add-to-list 'projectile-globally-ignored-files ".gitkeep") (add-to-list 'projectile-globally-ignored-directories ".direnv")) ;; Associate polymode to R markdown files (add-to-list 'auto-mode-alist '("\\.[rR]md\\'" . poly-markdown+R-mode)) ;; Keybindings for R markdown polymode (map! :map poly-markdown+R-mode-map :n "RET" #'polymode-eval-chunk :desc "Evaluate code block") ;; 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)) ;; HACK Workaround for Emacs 29 (general-auto-unbind-keys :off) (remove-hook 'doom-after-init-modules-hook #'general-auto-unbind-keys)