dotfiles/.config/emacs/lisp/init-package.el
2023-05-17 21:49:44 +09:00

91 lines
3.5 KiB
EmacsLisp

;;; init-package.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-func)
(when (and (file-exists-p custom-default-file)
(not (file-exists-p custom-file)))
(copy-file custom-default-file custom-file))
(and (file-readable-p custom-file) (load custom-file))
;; HACK: DO NOT save package-selected-packages to `custom-file'.
;; https://github.com/jwiegley/use-package/issues/383#issuecomment-247801751
(defun my-package--save-selected-packages (&optional value)
"Set `package-selected-packages' to VALUE but don't save to `custom-file'."
(when value
(setq package-selected-packages value))
(unless after-init-time
(add-hook 'after-init-hook #'my-package--save-selected-packages)))
(advice-add 'package--save-selected-packages :override #'my-package--save-selected-packages)
(require 'package)
(add-to-list 'package-archives '("stable" . "https://stable.melpa.org/packages/"))
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(customize-set-variable 'package-archive-priorities
'(("gnu" . 99) ; prefer GNU packages
("nongnu" . 80) ; use non-gnu packages if
; not found in GNU elpa
("stable" . 70) ; prefer "released" versions
; from melpa
("melpa" . 0))) ; if all else fails, get it
; from melpa
(unless (bound-and-true-p package--initialized)
(setq package-enable-at-startup nil)
(package-initialize))
;; Setup `use-package'
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
;; Should set before loading `use-package'
(eval-and-compile
(setq use-package-always-ensure t)
(setq use-package-always-defer t)
(setq use-package-expand-minimally t)
(setq use-package-enable-imenu-support t))
(eval-when-compile
(require 'use-package))
(use-package diminish)
(use-package bind-key)
(use-package paradox
:custom-face
(paradox-archive-face ((t (:inherit font-lock-doc-face))))
(paradox-description-face ((t (:inherit completions-annotations))))
:hook
(emacs-startup . paradox-enable)
:init
(setq paradox-execute-asynchronously t
paradox-github-token nil
paradox-display-star-count nil
paradox-status-face-alist ;
'(("built-in" . font-lock-builtin-face)
("available" . success)
("new" . (success bold))
("held" . font-lock-constant-face)
("disabled" . font-lock-warning-face)
("avail-obso" . font-lock-comment-face)
("installed" . font-lock-comment-face)
("dependency" . font-lock-comment-face)
("incompat" . font-lock-comment-face)
("deleted" . font-lock-comment-face)
("unsigned" . font-lock-warning-face)))
:config
(add-hook 'paradox-after-execute-functions
(lambda (_)
"Display `page-break-lines' in \"*Paradox Report*\" buffer."
(when (fboundp 'page-break-lines-mode)
(let ((buf (get-buffer "*Paradox Report*"))
(inhibit-read-only t))
(when (buffer-live-p buf)
(with-current-buffer buf
(page-break-lines-mode 1))))))
t))
(provide 'init-package)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init-package.el ends here