;;; dot-core-packages.el --- -*- lexical-binding: t; -*- ;;; Commentary: ;; Install core packages. ;;; Code: ;;; Compile ;; Automatically compile all packages. ;; https://github.com/emacscollective/auto-compile (elpaca-setup auto-compile (:require auto-compile) (:when-loaded (auto-compile-on-load-mode) (auto-compile-on-save-mode))) ;;; General packages (elpaca-setup general (:load-after evil) (:when-loaded ;; Fix for issue: general #493 and evil #130, #301 ;; https://github.com/noctuid/evil-guide#why-dont-keys-defined-with-evil-define-key-work-immediately (defun dot/general-fix-leader-key () "Fix leader key in *Messages* buffer." (when-let ((messages-buffer (get-buffer "*Messages*"))) (with-current-buffer messages-buffer (evil-normalize-keymaps)))) (add-hook 'emacs-startup-hook #'dot/general-fix-leader-key))) (elpaca-setup avy) (elpaca-setup hungry-delete (:require hungry-delete) (:when-loaded (global-hungry-delete-mode))) (elpaca-setup smart-tabs-mode ;; TODO: how does this get auto-loaded? (:when-loaded (smart-tabs-add-language-support latex latex-mode-hook ((latex-indent-line . 4) (latex-indent-region . 4))) ;; FIXME: breaks for Python files (smart-tabs-insinuate 'c 'c++ 'java 'python 'latex))) (elpaca-setup super-save (:require super-save) (:when-loaded (setq super-save-auto-save-when-idle t) ;; Fix for issues: super-save #38 and lsp-mode #1322 (defun dot/super-save-disable-advice (orig-fun &rest args) "Dont auto-save under these conditions." (unless (equal (car args) " *LV*") (apply orig-fun args))) (advice-add 'super-save-command-advice :around #'dot/super-save-disable-advice) (super-save-mode))) (elpaca-nil (setup desktop ; built-in (:require desktop) (:when-loaded (setq desktop-base-file-name "state") (setq desktop-base-lock-name "state.lock") (setq desktop-dirname (expand-file-name "desktop/" dot-cache-dir)) (setq desktop-path (list desktop-dirname)) (setq desktop-globals-to-save '()) ;; Only need frames and buffers ;; Create directory to store desktop file in (unless (file-directory-p desktop-dirname) (make-directory desktop-dirname t)) (defun dot/desktop-save () "Save frame state and buffers." (interactive) (dot/centaur-tabs-buffer-cleanup) (desktop-save desktop-dirname t)) (defun dot/desktop-save-on-exit () "Save state of buffers before closing Emacs." (dot/desktop-save) (desktop-release-lock desktop-dirname)) (add-hook 'kill-emacs-hook #'dot/desktop-save-on-exit)))) (provide 'dot-core-packages) ;;; dot-core-packages.el ends here