aboutsummaryrefslogtreecommitdiff
path: root/share/home/emacs/emacs.el
diff options
context:
space:
mode:
Diffstat (limited to 'share/home/emacs/emacs.el')
-rw-r--r--share/home/emacs/emacs.el144
1 files changed, 75 insertions, 69 deletions
diff --git a/share/home/emacs/emacs.el b/share/home/emacs/emacs.el
index 3baa19b..8eb5a89 100644
--- a/share/home/emacs/emacs.el
+++ b/share/home/emacs/emacs.el
@@ -1,18 +1,55 @@
;; -*- lexical-binding: t -*-
;;; emacs-config --- My emacs config
+;;;
;;; Commentary:
+;;; Various resources were used to hack together this config:
+;;; - https://sanemacs.com/
+;;; - https://rossabaker.com/configs/emacs/
+;;;
;;; Code:
-;; Lots of stuff copied from Sanemacs version 0.3.2
-;; https://sanemacs.com/
-;;; For performance
-(setq gc-cons-threshold 100000000)
-(setq read-process-output-max (* 1024 1024)) ;; 1mb
+;;; Early stuff
+(use-package benchmark-init
+ :ensure t
+ :demand t
+ :hook (after-init . benchmark-init/deactivate)
+ :config
+ (benchmark-init/activate))
+
+;;; GC
+(use-package gcmh
+ :ensure t
+ :diminish
+ :init (setq gc-cons-threshold (* 80 1024 1024))
+ :hook (emacs-startup . gcmh-mode))
+
+;; Trusted connections?
+(use-package gnutls
+ :defer t
+ :custom
+ (gnutls-verify-error t))
+(use-package no-littering
+ :ensure t
+ :init
+ (setq no-littering-etc-directory "~/.cache/emacs/etc/"
+ no-littering-var-directory "~/.cache/emacs/var/")
+ (when (fboundp 'startup-redirect-eln-cache)
+ (startup-redirect-eln-cache
+ (convert-standard-filename
+ (expand-file-name "eln-cache/" no-littering-var-directory)))))
+
+;;; use-package keywords
+(use-package bind-key
+ :demand t
+ :bind
+ (:prefix-map rab/files-map
+ :prefix "C-c f")
+ :bind
+ (:prefix-map rab/toggles-map
+ :prefix "C-c t"))
-(add-hook 'after-init-hook #'(lambda ()
- ;; restore after startup
- (setq gc-cons-threshold 800000)))
+(use-package diminish :ensure t)
;;; Disable menu-bar, tool-bar, and scroll-bar.
(if (fboundp 'menu-bar-mode)
@@ -22,11 +59,6 @@
(if (fboundp 'scroll-bar-mode)
(scroll-bar-mode -1))
-;;; Fix this bug:
-;;; https://www.reddit.com/r/emacs/comments/cueoug/the_failed_to_download_gnu_archive_is_a_pretty/
-(when (version< emacs-version "26.3")
- (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3"))
-
;;; Setup package.el
(require 'package)
(setq package-enable-at-startup nil)
@@ -49,66 +81,22 @@
(setq ring-bell-function 'ignore) ; Disable bell sound
(fset 'yes-or-no-p 'y-or-n-p) ; y-or-n-p makes answering questions faster
(show-paren-mode 1) ; Show closing parens by default
-(setq linum-format "%4d ") ; Line number format
-(delete-selection-mode 1) ; Selected text will be overwritten when you start typing
(global-auto-revert-mode t) ; Auto-update buffer if file has changed on disk
-(use-package undo-tree ; Enable undo-tree, sane undo/redo behavior
- :init (global-undo-tree-mode)
- :config (setq-default undo-tree-auto-save-history nil))
-(add-hook 'before-save-hook
- 'delete-trailing-whitespace) ; Delete trailing whitespace on save
-(add-hook 'prog-mode-hook ; Show line numbers in programming modes
- (if (and (fboundp 'display-line-numbers-mode) (display-graphic-p))
- #'display-line-numbers-mode
- #'linum-mode))
+(setopt create-lockfiles nil)
-(defun sanemacs/backward-kill-word ()
- (interactive "*")
- (push-mark)
- (backward-word)
- (delete-region (point) (mark)))
+(use-package display-line-numbers
+ :custom
+ (display-line-numbers-widen t)
+ :hook
+ ((prog-mode conf-mode) . display-line-numbers-mode))
-;;; Keybindings
-(global-set-key [mouse-3] 'mouse-popup-menubar-stuff) ; Gives right-click a context menu
-(global-set-key (kbd "C->") 'indent-rigidly-right-to-tab-stop) ; Indent selection by one tab length
-(global-set-key (kbd "C-<") 'indent-rigidly-left-to-tab-stop) ; De-indent selection by one tab length
-(global-set-key (kbd "M-DEL") 'sanemacs/backward-kill-word) ; Kill word without copying it to your clipboard
-(global-set-key (kbd "C-DEL") 'sanemacs/backward-kill-word) ; Kill word without copying it to your clipboard
-
-;;; Offload the custom-set-variables to a separate file
-;;; This keeps your init.el neater and you have the option
-;;; to gitignore your custom.el if you see fit.
-(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
-(unless (file-exists-p custom-file)
- (write-region "" nil custom-file))
-;;; Load custom file. Don't hide errors. Hide success message
-(load custom-file nil t)
-
-;;; Put Emacs auto-save and backup files to /tmp/ or C:/Temp/
-(defconst emacs-tmp-dir (expand-file-name (format "emacs%d" (user-uid)) temporary-file-directory))
-(setq
- backup-by-copying t ; Avoid symlinks
- delete-old-versions t
- kept-new-versions 6
- kept-old-versions 2
- version-control t
- auto-save-list-file-prefix emacs-tmp-dir
- auto-save-file-name-transforms `((".*" ,emacs-tmp-dir t)) ; Change autosave dir to tmp
- backup-directory-alist `((".*" . ,emacs-tmp-dir)))
-
-;;; Lockfiles unfortunately cause more pain than benefit
-(setq create-lockfiles nil)
+(use-package hl-line
+ :hook (on-first-buffer . global-hl-line-mode))
;;; Load wheatgrass as the default theme if one is not loaded already
-
(if (not custom-enabled-themes)
(load-theme 'wheatgrass t))
-(defun reload-config ()
- (interactive)
- (load-file (expand-file-name "init.el" user-emacs-directory)))
-
-
;; Autopairs
(electric-pair-mode 1)
@@ -117,6 +105,10 @@
:config
(evil-mode 1))
+(use-package envrc
+ :ensure t
+ :hook (on-first-file . envrc-global-mode))
+
(use-package nix-mode
:mode "\\.nix\\'")
@@ -130,11 +122,25 @@
(use-package company
:init (global-company-mode))
-(use-package projectile
+(use-package helm
:init
+ (helm-mode 1)
+ :config
+ (setq helm-completion-style 'emacs))
+
+(use-package fussy
+ :config
+ (push 'fussy completion-styles)
+ (setq
+ ;; For example, project-find-file uses 'project-files which uses
+ ;; substring completion by default. Set to nil to make sure it's using
+ ;; flx.
+ completion-category-defaults nil
+ completion-category-overrides nil))
+
+(use-package projectile
+ :bind-keymap ("C-c p" . projectile-command-map)
+ :config
(projectile-mode +1))
-(use-package helm
- :init
- (helm-mode 1))
;;; emacs.el ends here