;;; 02-custom-package-setup --- Provide setup for packages and use-package

;;; Commentary:
;; Configure Melpa
;; Package management
;; set load-path manually
;; don't call package-initialize

;;; Code:

(eval-and-compile
  (setq load-prefer-newer t
        package-user-dir "~/.emacs.d/elpa"
        package--init-file-ensured t    ; so it doesn't call package initialize
        package-enable-at-startup nil)  ; do not automatically load packages

  (unless (file-directory-p package-user-dir)
    (make-directory package-user-dir t)))

(setq use-package-verbose t
      use-package-always-defer t ; this is default, but setting here anyway for clarity
      use-package-minimum-reported-time 0.01)

;; Initialize package management
(eval-when-compile                      ; when byte compiled skip this
  (require 'package)

  ;; add aditional package archives
  (setq package-archives
        `(("gnu"   . "https://elpa.gnu.org/packages/")
          ("melpa" . "https://melpa.org/packages/")
          ("org"   . "https://orgmode.org/elpa/")))

  ;; initialize packages and ensure that use-package is installed
  (package-initialize)
  (unless (package-installed-p 'use-package)
    (package-refresh-contents)
    (package-install 'use-package))     ; install if it's missing
  (unless (package-installed-p 'diminish)
    (package-refresh-contents)
    (package-install 'diminish))        ; install if it's missing
  (require 'use-package)
  (require 'bind-key)
  (require 'diminish)
  (setq use-package-always-ensure t))

(eval-and-compile
  (require 'use-package)
  (require 'bind-key)
  (require 'diminish)
  (bind-keys :prefix-map my-ctrl-x-b-map
             :prefix "C-x b")
  (bind-keys :prefix-map my-ctrl-x-ctrl-l-map
             :prefix "C-x C-l")
  (bind-keys :prefix-map my-ctrl-c-h-map
             :prefix "C-c h")
  )

(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-version 5))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

(provide '02-custom-package-setup)
;;; 02-custom-package-setup.el ends here
