Files
dotfiles/.emacs.rc/rc.el
Fabio Scotto di Santolo 3a59d8b46a Personalizzazioni per emacs
2019-12-07 12:02:37 +01:00

69 lines
1.9 KiB
EmacsLisp

(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
;; (add-to-list 'package-archives
;; '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(defvar rc/package-contents-refreshed nil)
(defvar rc/required-packages nil)
(defun rc/package-refresh-contents-once ()
(when (not rc/package-contents-refreshed)
(setq rc/package-contents-refreshed t)
(package-refresh-contents)))
(defun rc/require-one-package (package)
(push package rc/required-packages)
(when (not (package-installed-p package))
(rc/package-refresh-contents-once)
(package-install package)))
(defun rc/require (&rest packages)
(dolist (package packages)
(rc/require-one-package package)))
(defun rc/require-theme (theme)
(let ((theme-package (->> theme
(symbol-name)
(funcall (-flip #'concat) "-theme")
(intern))))
(rc/require theme-package)
(load-theme theme t)))
(rc/require 'dash)
(require 'dash)
(rc/require 'dash-functional)
(require 'dash-functional)
(defun rc/package-reqs (package)
(let ((package-desc
(->> package-alist
(alist-get package)
(car))))
(when package-desc
(package-desc-reqs package-desc))))
(defun rc/package-dependencies (package)
(->> package
(rc/package-reqs)
(-map #'car)
(cons package)))
(defun rc/package-expand-dependencies (packages)
(->> packages
(-map #'rc/package-dependencies)
(-flatten)
(remove-duplicates)))
(defun rc/unused-packages ()
(let ((all-package (rc/package-expand-dependencies rc/required-packages)))
(->> package-alist
(-map #'car)
(-filter (-lambda (package)
(not (-contains? all-package package)))))))
(defun rc/remove-unused-packages ()
(interactive)
(message "Unused packages: %s" (rc/unused-packages)))