emacs.d/init.el

140 lines
5.0 KiB
EmacsLisp

;;; -*- lexical-binding: t; -*-
;;; BEGIN OPTIMIZATION
;; Optimizations (mostly taken from doom)
(defvar init-done-hook nil)
;; Don't garbage collect during init
(add-hook 'init-done-hook
`(lambda () (setq gc-cons-threshold
,(default-toplevel-value 'gc-cons-threshold))))
(setq gc-cons-threshold most-positive-fixnum)
;; Don't use file type handlers during init
(let ((old-value (default-toplevel-value 'file-name-handler-alist)))
(setq file-name-handler-alist nil)
(set-default-toplevel-value 'file-name-handler-alist file-name-handler-alist)
(put 'file-name-handler-alist 'initial-value old-value)
(add-hook 'init-done-hook
(lambda ()
(setq file-name-handler-alist
;; Merge instead of overwrite because there may have been changes to
;; `file-name-handler-alist' since startup we want to preserve.
(delete-dups (append file-name-handler-alist old-value))))))
;; Don't resize during init
(setq frame-inhibit-implied-resize t)
(setq inhibit-startup-screen t
inhibit-startup-echo-area-message user-login-name)
(advice-add #'display-startup-echo-area-message :override #'ignore)
(advice-add #'display-startup-screen :override #'ignore)
;; Don't use advanced modes for scratch buffer
(setq initial-major-mode 'fundamental-mode
initial-scratch-message nil)
;; Don't cause rewrites when loading file
(define-advice load-file (:override (file) silence) (load file nil 'nomessage))
(define-advice startup--load-user-init-file (:before (&rest _) undo-silence)
(advice-remove #'load-file #'load-file@silence))
;; Disable modeline
(put 'mode-line-format 'initial-value (default-toplevel-value 'mode-line-format))
(setq-default mode-line-format nil)
(dolist (buf (buffer-list))
(with-current-buffer buf (setq mode-line-format nil)))
;; Inhibit redraws
(setq-default inhibit-redisplay t
inhibit-message t)
(defun reset-inhibited-vars-h ()
(setq-default inhibit-redisplay nil
;; Inhibiting `message' only prevents redraws and
inhibit-message nil)
(redraw-frame))
(add-hook 'after-init-hook #'reset-inhibited-vars-h)
(define-advice startup--load-user-init-file (:after (&rest _) undo-inhibit-vars)
(when init-file-had-error
(reset-inhibited-vars-h))
(unless (default-toplevel-value 'mode-line-format)
(setq-default mode-line-format (get 'mode-line-format 'initial-value))))
;; Don't load toolbar
(advice-add #'tool-bar-setup :override #'ignore)
(define-advice startup--load-user-init-file (:before (&rest _) defer-tool-bar-setup)
(advice-remove #'tool-bar-setup #'ignore)
(add-transient-hook! 'tool-bar-mode (tool-bar-setup)))
;; Don't bother with MACOS exclusive options
(setq command-line-ns-option-alist nil)
;;; END OPTIMIZATION
;; Packages
(require 'package)
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(package-initialize)
;; File inclusion
(defun path (f) (concat "/home/deppy/.emacs.d/" f))
(defmacro include (f) (load (path f)))
;; Keybinds
(include "binds.el")
;; Style (theme, etc)
(include "style.el")
;; Zotero
(include "packages.el")
;; Secrets
(include "secrets.el")
;; Behaviour
(include "behaviour.el")
;; Emacs server
(server-start)
;; Exwm
(include "exwm.el")
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(display-time-24hr-format t)
'(display-time-default-load-average nil)
'(display-time-interval 15)
'(display-time-mode t)
'(evil-undo-system 'undo-tree)
'(org-agenda-files '("/home/deppy/doc/org/todo.org"))
'(package-selected-packages
'(edwina markdown-preview-mode markdown-mode exwm org-superstar org-fragtog org-pretty-tags visual-fill writeroom-mode haskell-emacs treemacs-evil treemacs solarized-theme doom-modeline all-the-icons-dired page-break-lines all-the-icons dashboard org-evil zotero vterm magit undo-fu latex-math-preview use-package haskell-mode evil-surround undo-tree evil-org evil))
'(warning-suppress-log-types '((comp)))
'(warning-suppress-types '((comp)))
'(writeroom-mode-line t)
'(writeroom-width 100)
'(zotero-recognize-pdfdata
"/home/deppy/.emacs.d/elpa/zotero-20211008.2207/pdftools/poppler-data/")
'(zotero-recognize-pdfinfo
"/home/deppy/.emacs.d/elpa/zotero-20211008.2207/pdftools/pdfinfo-linux-x86_64" t)
'(zotero-recognize-pdftotext
"/home/deppy/.emacs.d/elpa/zotero-20211008.2207/pdftools/pdftotext-linux-x86_64"))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(bookmark-face ((t (:foreground "#fdf6e3"))))
'(mode-line ((t (:underline nil :overline nil))))
'(mode-line-inactive ((t (:underline nil :overline nil)))))
;; Reset values
(run-hooks 'init-done-hook)