;;; init.el -*- lexical-binding: t; -*- ;;; Initial phase. ;; Load the custom file if it exists. Among other settings, this will ;; have the list `package-selected-packages', so we need to load that ;; before adding more packages. The value of the `custom-file' ;; variable must be set appropriately, by default the value is nil. ;; This can be done here, or in the early-init.el file. (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (when (and custom-file (file-exists-p custom-file)) (load custom-file nil 'nomessage)) ;; Add custom modules to the `load-path' (add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) ;; Adds crafted-emacs modules to the `load-path' (setq crafted-emacs-home (expand-file-name "crafted-emacs" user-emacs-directory)) (add-to-list 'load-path (expand-file-name "modules" crafted-emacs-home)) ;;; Configuration phase (require 'crafted-completion-config) (require 'crafted-defaults-config) (require 'crafted-ide-config) (require 'crafted-org-config) (require 'crafted-speedbar-config) (require 'crafted-startup-config) (require 'crafted-ui-config) (require 'crafted-workspaces-packages) (require 'crafted-writing-packages) (require 'custom-email-config) (require 'custom-feed-config) (require 'custom-ide-config) (require 'custom-ligatures-config) (require 'custom-project-config) ;;; Optional configuration (setq user-full-name "Evie Litherland-Smith" user-mail-address "evie@xenia.me.uk" sendmail-program (executable-find "msmtp") send-mail-function #'smtpmail-send-it message-sendmail-f-is-evil t message-sendmail-extra-arguments '("--read-envelope-from") message-send-mail-function #'message-send-mail-with-sendmail display-line-numbers 'relative fill-column 80) ;; Theme settings (tool-bar-mode -1) (scroll-bar-mode -1) (setq use-dialog-box nil) (load-theme 'doom-tokyo-night t) (add-to-list 'default-frame-alist '(font . "FiraCode Nerd Font-12")) (global-prettify-symbols-mode) (set-frame-parameter nil 'alpha-background 80) (add-to-list 'default-frame-alist '(alpha-background . 80)) ;; Extra minor-modes (which-key-mode) ;; Extra functions (defun crafted-startup-example/display-startup-time () "Display the startup time after Emacs is fully initialized." (message "Crafted Emacs loaded in %s." (emacs-init-time))) (add-hook 'emacs-startup-hook #'crafted-startup-example/display-startup-time) (defun my/org-move-done-tasks-to-bottom () "Sort all tasks in the topmost heading by TODO state." (interactive) (save-excursion (while (org-up-heading-safe)) (org-sort-entries nil ?o)) ;; Reset the view of TODO items (org-overview) (org-show-entry) (org-show-children)) ;; Set default coding system (especially for Windows) (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) ;; Org-Mode settings (setq org-directory "~/Org" org-agenda-files '("~/Org/") org-agenda-sticky t org-agenda-prefix-format '((agenda . " %i %t %s") (todo . " %i") (tags . " %i") (search . " %i"))) ;; Magit settings (setq magit-clone-default-directory "~/Projects/") ;; ntfy server settings (setq ntfy-server "https://ntfy.xenia.me.uk" ntfy-topic "UhrNGphnSKCpCnk8" ntfy-header "Notification from emacs" ntfy-tags "purple_circle,loudspeaker") ;; Apheleia settings (setq apheleia-remote-algorithm 'local) ;; TRAMP settings (setq tramp-default-method "sshx" tramp-default-remote-shell "/bin/sh" tramp-remote-path '(tramp-own-remote-path tramp-default-remote-path))