;;; init.el --- user-init-file -*- lexical-binding: t -*- ;;; Early birds (progn ; startup (defvar before-user-init-time (current-time) "Value of `current-time' when Emacs begins loading `user-init-file'.") (message "Loading Emacs...done (%.3fs)" (float-time (time-subtract before-user-init-time before-init-time))) (setq user-init-file (or load-file-name buffer-file-name)) (setq user-emacs-directory (file-name-directory user-init-file)) (message "Loading %s..." user-init-file) (when (< emacs-major-version 27) (setq package-enable-at-startup nil) ;; (package-initialize) (load-file (expand-file-name "early-init.el" user-emacs-directory))) (setq inhibit-startup-buffer-menu t) (setq inhibit-startup-screen t) (setq inhibit-startup-echo-area-message "locutus") (setq initial-buffer-choice t) (setq initial-scratch-message "") (when (fboundp 'scroll-bar-mode) (scroll-bar-mode 0)) (when (fboundp 'tool-bar-mode) (tool-bar-mode 0)) (menu-bar-mode 0)) (eval-and-compile ; `borg' (add-to-list 'load-path (expand-file-name "lib/borg" user-emacs-directory)) (require 'borg) (borg-initialize)) (eval-and-compile ; `use-package' (require 'use-package) (setq use-package-verbose t)) (use-package dash) (use-package eieio) (use-package auto-compile :config (setq auto-compile-display-buffer nil) (setq auto-compile-mode-line-counter t) (setq auto-compile-source-recreate-deletes-dest t) (setq auto-compile-toggle-deletes-nonlib-dest t) (setq auto-compile-update-autoloads t)) (use-package no-littering) (use-package epkg :defer t :init (setq epkg-repository (expand-file-name "var/epkgs/" user-emacs-directory)) (setq epkg-database-connector (if (>= emacs-major-version 29) 'sqlite-builtin 'sqlite-module))) (use-package custom :no-require t :config (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (when (file-exists-p custom-file) (load custom-file))) (use-package server :commands (server-running-p) :config (or (server-running-p) (server-mode))) (progn ; startup (message "Loading early birds...done (%.3fs)" (float-time (time-subtract (current-time) before-user-init-time)))) ;;; Long tail (use-package autorevert :config (setq auto-revert-verbose nil)) (use-package copyright :defer t :config (add-hook 'before-save-hook 'copyright-update)) (use-package dash :config (global-dash-fontify-mode)) (use-package diff-hl :config (setq diff-hl-draw-borders nil) (global-diff-hl-mode) (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh t)) (use-package diff-hl-flydiff :config (diff-hl-flydiff-mode)) (use-package diff-mode :defer t :config (when (>= emacs-major-version 27) (set-face-attribute 'diff-refine-changed nil :extend t) (set-face-attribute 'diff-refine-removed nil :extend t) (set-face-attribute 'diff-refine-added nil :extend t))) (use-package dim-autoload :config (global-dim-autoload-cookies-mode)) (use-package dired :defer t :config (setq dired-listing-switches "-alh")) (use-package ediff :defer t :config (setq ediff-window-setup-function 'ediff-setup-windows-plain)) (use-package eldoc :when (version< "25" emacs-version) :config (global-eldoc-mode)) (use-package forge :after magit :init (setq forge-database-connector (if (>= emacs-major-version 29) 'sqlite-builtin 'sqlite-module))) (use-package git-commit :defer t :config (remove-hook 'git-commit-setup-hook 'git-commit-setup-changelog-support) (remove-hook 'git-commit-setup-hook 'git-commit-propertize-diff) (remove-hook 'git-commit-setup-hook 'with-editor-usage-message) (add-hook 'git-commit-setup-hook 'git-commit-turn-on-flyspell t)) (use-package git-rebase :defer t :config (setq git-rebase-confirm-cancel nil) (setq git-rebase-show-instructions nil)) (use-package help :defer t :config (temp-buffer-resize-mode)) (use-package hl-todo :config (global-hl-todo-mode)) (progn ; `isearch' (setq isearch-allow-scroll t)) (use-package lisp-mode :config (add-hook 'emacs-lisp-mode-hook 'outline-minor-mode) (add-hook 'emacs-lisp-mode-hook 'reveal-mode) (defun indent-spaces-mode () (setq indent-tabs-mode nil)) (add-hook 'lisp-interaction-mode-hook 'indent-spaces-mode)) (use-package magit :defer t :commands (magit-add-section-hook) ;; ;; Key bindings :bind (("C-c g" . magit-dispatch) ("C-c f" . magit-file-dispatch)) ;; ;; Margin settings :init (setq magit-log-margin '(nil age magit-log-margin-width nil 15)) (setq magit-refs-margin-for-tags t) ;; ;; Disable safety nets :config (setq magit-commit-squash-confirm nil) (setq magit-save-repository-buffers 'dontask) (setf (nth 2 (assq 'magit-stash-pop magit-dwim-selection)) t) (setf (nth 2 (assq 'magit-stash-drop magit-dwim-selection)) t) (add-to-list 'magit-no-confirm 'safe-with-wip t) (add-to-list 'magit-no-confirm 'rename t) (add-to-list 'magit-no-confirm 'resurrect t) (add-to-list 'magit-no-confirm 'trash t) ;; ;; Window managment (setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-topleft-v1) (add-hook 'magit-section-movement-hook 'magit-status-maybe-update-revision-buffer) (add-hook 'magit-section-movement-hook 'magit-status-maybe-update-blob-buffer) (add-hook 'magit-section-movement-hook 'magit-log-maybe-update-blob-buffer) ;; ;; Global settings (add-hook 'after-save-hook 'magit-after-save-refresh-status t) (add-to-list 'magit-repository-directories (cons "~/.emacs.d/" 0)) (add-to-list 'magit-repository-directories (cons "~/.emacs.d/lib/" 1)) ;; ;; Branch settings (setq magit-branch-adjust-remote-upstream-alist '(("main" . ("main" "master" "next" "maint")) ("master" . ("main" "master" "next" "maint")))) ;; ;; Push settings (setq magit-push-current-set-remote-if-missing 'default) ;; ;; Status buffer settings (add-to-list 'magit-section-initial-visibility-alist '(magit-status-initial-section . show)) (setq magit-status-initial-section '(((unpulled . "..@{upstream}") (status)) ((unpushed . "@{upstream}..") (status)))) (magit-add-section-hook 'magit-status-sections-hook 'magit-insert-modules 'magit-insert-stashes 'append) (magit-add-section-hook 'magit-status-sections-hook 'magit-insert-worktrees 'magit-insert-modules 'append) ;; ;; Diff buffer settings (setq magit-diff-refine-hunk 'all) ;; ;; Revision buffer settings (setq magit-revision-show-gravatars t)) (use-package magit-wip :after magit :config (magit-wip-mode)) (use-package man :defer t :config (setq Man-width 80)) (use-package mode-line-debug :config (mode-line-debug-mode)) (use-package morlock :config (global-morlock-mode)) (use-package paren :config (show-paren-mode)) (use-package paren-face :config (global-paren-face-mode)) (use-package prog-mode :config (global-prettify-symbols-mode) (defun indicate-buffer-boundaries-left () (setq indicate-buffer-boundaries 'left)) (add-hook 'prog-mode-hook 'indicate-buffer-boundaries-left)) (use-package recentf :demand t :config (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?x?:")) (use-package savehist :config (savehist-mode)) (use-package saveplace :when (version< "25" emacs-version) :config (save-place-mode)) (use-package shell :defer t :config (require 'with-editor) (add-hook 'shell-mode-hook 'with-editor-export-editor)) (use-package simple :config (column-number-mode)) (use-package sisyphus :when (>= emacs-major-version 27) :after magit) (use-package smerge-mode :defer t :config (setq smerge-refine-ignore-whitespace nil) (when (>= emacs-major-version 27) (set-face-attribute 'smerge-refined-removed nil :extend t) (set-face-attribute 'smerge-refined-added nil :extend t))) (use-package term :defer t :config (require 'with-editor) (add-hook 'term-exec-hook 'with-editor-export-editor)) (progn ; `text-mode' (add-hook 'text-mode-hook 'indicate-buffer-boundaries-left)) (use-package tramp :defer t :config (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:")) (add-to-list 'tramp-default-proxies-alist '("localhost" nil nil)) (add-to-list 'tramp-default-proxies-alist (list (regexp-quote (system-name)) nil nil)) (setq vc-ignore-dir-regexp (format "\\(%s\\)\\|\\(%s\\)" vc-ignore-dir-regexp tramp-file-name-regexp))) (use-package tramp-sh :defer t :config (cl-pushnew 'tramp-own-remote-path tramp-remote-path)) (use-package undo-tree :config (global-undo-tree-mode) (setq undo-tree-mode-lighter "")) ;;; Tequila worms (progn ; startup (message "Loading %s...done (%.3fs)" user-init-file (float-time (time-subtract (current-time) before-user-init-time))) (add-hook 'after-init-hook (lambda () (message "Loading %s...done (%.3fs) [after-init]" user-init-file (float-time (time-subtract (current-time) before-user-init-time)))) t)) (progn ; personalize (let ((file (expand-file-name (concat (user-real-login-name) ".el") user-emacs-directory))) (when (file-exists-p file) (load file)))) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; init.el ends here