ed7d4ab4e6
This is to hopefully avoid running garbage collection while I am actively interacting with emacs, which should theoretically result in a smoother experience.
95 lines
3.1 KiB
EmacsLisp
95 lines
3.1 KiB
EmacsLisp
(package-initialize)
|
|
(use-package use-package)
|
|
|
|
(add-to-list 'package-archives
|
|
'("melpa" . "https://melpa.org/packages/")
|
|
)
|
|
|
|
(use-package auto-package-update
|
|
:ensure t
|
|
:config
|
|
(setq auto-package-update-delete-old-versions t
|
|
auto-package-update-interval 14)
|
|
(auto-package-update-maybe))
|
|
|
|
(defun assert-directory (p)
|
|
(unless (file-exists-p p) (make-directory p t))
|
|
p
|
|
)
|
|
|
|
(defconst private-dir (expand-file-name "private" user-emacs-directory))
|
|
(defconst temp-dir (format "%s/cache" private-dir)
|
|
"Hostname-based elisp temp directories")
|
|
(assert-directory (concat temp-dir "/auto-save-list/"))
|
|
(setq autoload-directory (concat user-emacs-directory (file-name-as-directory "elisp") (file-name-as-directory "autoload")))
|
|
(add-to-list 'load-path (assert-directory autoload-directory))
|
|
|
|
(setq-default
|
|
;; Disable backup files and lockfiles
|
|
make-backup-files nil
|
|
auto-save-default nil
|
|
create-lockfiles nil
|
|
;; Unless otherwise specified, always install packages if they are absent.
|
|
use-package-always-ensure t
|
|
;; Point custom-file at /dev/null so emacs does not write any settings to my dotfiles.
|
|
custom-file "/dev/null"
|
|
;; Don't pop up a small window at the bottom of emacs at launch.
|
|
inhibit-startup-screen t
|
|
inhibit-startup-message t
|
|
;; Don't show the list of buffers when opening many files.
|
|
inhibit-startup-buffer-menu t
|
|
;; Give the scratch buffer a clean slate.
|
|
initial-major-mode 'fundamental-mode
|
|
initial-scratch-message nil
|
|
;; Send prompts to mini-buffer not the GUI
|
|
use-dialog-box nil
|
|
;; End files with line break
|
|
require-final-newline t
|
|
;; Use spaces, not tabs
|
|
indent-tabs-mode nil
|
|
;; Use a better frame title
|
|
frame-title-format '("" invocation-name ": "(:eval (if (buffer-file-name)
|
|
(abbreviate-file-name (buffer-file-name))
|
|
"%b")))
|
|
;; Use 'y' or 'n' instead of 'yes' or 'no'
|
|
use-short-answers t
|
|
;; Natively compile packages
|
|
package-native-compile t
|
|
;; Confirm when opening a file that does not exist
|
|
confirm-nonexistent-file-or-buffer t
|
|
;; Do not require double space to end a sentence.
|
|
sentence-end-double-space nil
|
|
;; Show trailing whitespace
|
|
show-trailing-whitespace t
|
|
;; Remove the line when killing it with ctrl-k
|
|
kill-whole-line t
|
|
)
|
|
|
|
;; (setq-default fringes-outside-margins t)
|
|
|
|
;; Per-pixel scrolling instead of per-line
|
|
(pixel-scroll-precision-mode)
|
|
|
|
;; Typed text replaces selection
|
|
(delete-selection-mode)
|
|
|
|
|
|
;; Delete trailing whitespace before save
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
|
|
|
;; If the underlying file changes, reload it automatically. This is useful for moving around in git without confusing language servers.
|
|
(setopt auto-revert-avoid-polling t)
|
|
(setopt auto-revert-interval 5)
|
|
(setopt auto-revert-check-vc-info t)
|
|
(global-auto-revert-mode)
|
|
|
|
;;;;; Performance
|
|
;; Run garbage collect when emacs is idle
|
|
(run-with-idle-timer 5 t (lambda () (garbage-collect)))
|
|
(add-function :after after-focus-change-function
|
|
(lambda ()
|
|
(unless (frame-focus-state)
|
|
(garbage-collect))))
|
|
|
|
(provide 'base)
|