emacs-rice/modules/fn-core.el

145 lines
4.1 KiB
EmacsLisp

;; -*- lexical-binding: t; -*-
(setq user-emacs-directory (expand-file-name "~/.cache/emacs/")
url-history-file (expand-file-name "url/history" user-emacs-directory))
(use-package no-littering
:demand t
:config
;; Set the custom-file to a file that won't be tracked by Git
(setq custom-file (if (boundp 'server-socket-dir)
(expand-file-name "custom.el" server-socket-dir)
(no-littering-expand-etc-file-name "custom.el")))
(when (file-exists-p custom-file)
(load custom-file t))
;; Don't litter project folders with backup files
(let ((backup-dir (no-littering-expand-var-file-name "backup/")))
(make-directory backup-dir t)
(setq backup-directory-alist
`(("\\`/tmp/" . nil)
("\\`/dev/shm/" . nil)
("." . ,backup-dir))))
(setq auto-save-default nil)
;; Tidy up auto-save files
(setq auto-save-default nil)
(let ((auto-save-dir (no-littering-expand-var-file-name "auto-save/")))
(make-directory auto-save-dir t)
(setq auto-save-file-name-transforms
`(("\\`/[^/]*:\\([^/]*/\\)*\\([^/]*\\)\\'"
,(concat temporary-file-directory "\\2") t)
("\\`\\(/tmp\\|/dev/shm\\)\\([^/]*/\\)*\\(.*\\)\\'" "\\3")
("." ,auto-save-dir t)))))
;;; -- Native Compilation -----
;; Silence compiler warnings as they can be pretty disruptive
(setq native-comp-async-report-warnings-errors nil)
;; Set the right directory to store the native comp cache
(add-to-list 'native-comp-eln-load-path (expand-file-name "eln-cache/" user-emacs-directory))
(setq-default fill-column 120)
(use-package minions
:init
(minions-mode))
;; Revert Dired and other buffers
(setq global-auto-revert-non-file-buffers t)
;; Revert buffers when the underlying file has changed
(global-auto-revert-mode 1)
(use-package alert)
(use-package super-save
:config
(super-save-mode +1)
(setq super-save-auto-save-when-idle t)
;; (add-to-list 'super-save-predicates (lambda ()
;; (not (eq major-mode 'mu4e-compose-mode))))
)
;; If a popup does happen, don't resize windows to be equal-sized
(setq even-window-sizes nil)
(use-package popper
:bind (("C-M-'" . popper-toggle-latest)
("M-'" . popper-cycle)
("C-M-\"" . popper-toggle-type))
:custom
(popper-window-height 12)
(popper-reference-buffers '(eshell-mode
vterm-mode
geiser-repl-mode
help-mode
grep-mode
helpful-mode
compilation-mode))
:config
(require 'popper) ;; Needed because I disabled autoloads
(popper-mode 1))
;;; ----- Dired -----
(use-package all-the-icons)
(use-package all-the-icons-dired)
(use-package dired-ranger)
(defun fn/dired-mode-hook ()
(interactive)
(dired-hide-details-mode 1)
(unless (or fn/is-termux
(string-equal "/nix/store/" (expand-file-name default-directory)))
(all-the-icons-dired-mode 1))
(hl-line-mode 1))
(use-package dired
:straight (:type built-in)
:bind (:map dired-mode-map
("b" . dired-up-directory)
("H" . dired-hide-details-mode))
:config
(setq dired-listing-switches "-agho --group-directories-first"
dired-omit-files "^\\.[^.].*"
dired-omit-verbose nil
dired-dwim-target 'dired-dwim-target-next
dired-hide-details-hide-symlink-targets nil
dired-kill-when-opening-new-dired-buffer t
delete-by-moving-to-trash t)
(add-hook 'dired-mode-hook #'fn/dired-mode-hook))
(use-package savehist
:config
(setq history-length 25)
(savehist-mode 1))
;;; -- Make Help More Helpful -----
(use-package helpful
:custom
(counsel-describe-function-function #'helpful-callable)
(counsel-describe-variable-function #'helpful-variable)
:bind (([remap describe-function] . helpful-function)
([remap describe-symbol] . helpful-symbol)
([remap describe-variable] . helpful-variable)
([remap describe-command] . helpful-command)
([remap describe-key] . helpful-key)))
(provide 'fn-core)