;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- (setq user-full-name "Colin Powell" user-mail-address "colin@unbl.ink") (nyan-mode) (setq doom-theme 'doom-one doom-font (font-spec :family "Iosevka" :size 14 :weight 'regular) doom-big-font (font-spec :family "Iosevka" :size 18 :weight 'regular) doom-variable-pitch-font (font-spec :family "Overpass" :size 12)) (setq display-line-numbers-type t) ;; change `org-directory'. It must be set before org loads! (setq org-directory "~/var/org/") (load! "+agenda-fix") (defun vulpea-agenda-files-update (&rest _) (setq org-agenda-files vulpea-project-files)) (setq org-roam-directory "~/var/org/" org-roam-dailies-directory "dailies") (advice-add 'org-agenda :before #'vulpea-agenda-files-update) (advice-add 'org-todo-list :before #'vulpea-agenda-files-update) (map! ;; 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) :leader (:prefix "f" :desc "Find file in dotfiles" "t" #'+hlissner/find-in-dotfiles :desc "Browse dotfiles" "T" #'+hlissner/browse-dotfiles) (:prefix "b" :desc "Black format buffer" "f" #'blacken-buffer :desc "isort buffer" "I" #'py-isort-buffer :desc "Links in buffer" "l" #'ace-link-org)) (defun unfill-paragraph () "Takes a multi-line paragraph and makes it into a single line of text." (interactive) (let ((fill-column (point-max))) (fill-paragraph nil))) (define-key global-map "\M-z" 'unfill-paragraph) (defun file-notify-rm-all-watches () "Remove all existing file notification watches from Emacs." (interactive) (maphash (lambda (key _value) (file-notify-rm-watch key)) file-notify-descriptors)) (setq frame-title-format '("" (:eval (if (s-contains-p org-roam-directory (or buffer-file-name "")) (replace-regexp-in-string ".*/[0-9]*-?" "☰ " (subst-char-in-string ?_ ? buffer-file-name)) "%b")) (:eval (let ((project-name (projectile-project-name))) (unless (string= "-" project-name) (format (if (buffer-modified-p) " ◉ %s" "  ●  %s") project-name)))))) (setq mm-text-html-renderer 'w3m) (setq w3m-fill-column 88) (setq lsp-lens-enable 1 lsp-ui-sideline-enable 1 lsp-enable-links 1 lsp-headerline-breadcrumb-enable 1 lsp-modeline-code-actions-enable 1 lsp-modeline-diagnostics-enable 1 lsp-completion-show-detail 1 lsp-file-watch-threshold nil) ;; check for hosts folder and find any init-HOSTNAME.el files in there and load them (defvar host (substring (shell-command-to-string "hostname") 0 -1)) (defvar host-dir "~/.config/doom/hosts/") (add-load-path! host-dir) ;; Setup nov.el mode for epubs and change font (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) (defun my-nov-font-setup () (face-remap-add-relative 'variable-pitch :family "Overpass" :height 1.0)) (add-hook 'nov-mode-hook 'my-nov-font-setup) ;;(let ((init-host-feature (intern (concat "init-" host ".el")))) ;; (load-file init-host-feature)) (defvar host-init (concat "~/.config/doom/hosts/init-" host ".el")) (if (file-exists-p host-init) (load-file host-init)) (load-file "~/.config/doom/+agenda-fix.el") ;; Enable org-modern mode per buffer ;(add-hook 'org-mode-hook #'org-modern-mode) ;(add-hook 'org-agenda-finalize-hook #'org-modern-agenda) ;; Or globally (with-eval-after-load 'org (global-org-modern-mode)) (require 'cl-lib) (defun eshell-load-bash-aliases () "Read Bash aliases and add them to the list of eshell aliases." ;; Bash needs to be run - temporarily - interactively ;; in order to get the list of aliases. (with-temp-buffer (call-process "bash" nil '(t nil) nil "-ci" "alias") (goto-char (point-min)) (cl-letf (((symbol-function 'eshell-write-aliases-list) #'ignore)) (while (re-search-forward "alias \\(.+\\)='\\(.+\\)'$" nil t) (eshell/alias (match-string 1) (match-string 2)))) (eshell-write-aliases-list))) ;; We only want Bash aliases to be loaded when Eshell loads its own aliases, ;; rather than every time `eshell-mode' is enabled. (add-hook 'eshell-alias-load-hook 'eshell-load-bash-aliases)