diff options
| author | Miran Bastaja <miran.bastaja04@gmail.com> | 2023-12-10 17:26:26 +0100 |
|---|---|---|
| committer | Miran Bastaja <miran.bastaja04@gmail.com> | 2023-12-10 17:26:26 +0100 |
| commit | dd0cfef2ef6c77c396fb71f968ee9762e648f0c7 (patch) | |
| tree | 32a15c0de712b85dd45791311c6f47b7dcba75c5 /share/home/emacs/emacs.el | |
| parent | 871cd5454bdfdac51efc8c2243603592ecbe8bf3 (diff) | |
WIP: improve emacs config
Diffstat (limited to 'share/home/emacs/emacs.el')
| -rw-r--r-- | share/home/emacs/emacs.el | 144 |
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 |
