From 695a920a43a0317221e590038ac135d9dd7cdb7c Mon Sep 17 00:00:00 2001 From: Miran Bastaja Date: Mon, 25 Dec 2023 15:16:29 +0100 Subject: emacs: small config improvements --- share/home/emacs/emacs.el | 16 ++- share/home/emacs/flycheck_emacs.el | 222 +++++++++++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+), 6 deletions(-) create mode 100644 share/home/emacs/flycheck_emacs.el (limited to 'share/home') diff --git a/share/home/emacs/emacs.el b/share/home/emacs/emacs.el index 6cf9652..31512c8 100644 --- a/share/home/emacs/emacs.el +++ b/share/home/emacs/emacs.el @@ -99,6 +99,8 @@ (defun display-startup-echo-area-message () (message "")) + (global-display-line-numbers-mode) + :hook ((prog-mode . mb/enable-line-numbers) (prog-mode . mb/enable-fill-column)) @@ -183,15 +185,13 @@ (use-package flycheck :hook (prog-mode . flycheck-mode)) -;;; Customization - Line numbers ;;; - -(when (version<= "26.0.50" emacs-version ) - (global-display-line-numbers-mode)) - ;;; Customization - Which key ;;; (use-package which-key - :config (which-key-mode +1)) + :init + (setq which-key-idle-delay 0.1) + :config + (which-key-mode +1)) ;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Languages ;;; @@ -207,6 +207,10 @@ (use-package proof-general :mode ("\\.v\\'" . coq-mode)) + +;;; Languages - Rust ;;; +;; TODO + ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Useful modes ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/share/home/emacs/flycheck_emacs.el b/share/home/emacs/flycheck_emacs.el new file mode 100644 index 0000000..31512c8 --- /dev/null +++ b/share/home/emacs/flycheck_emacs.el @@ -0,0 +1,222 @@ +;;; init.el --- Initalization -*- lexical-binding: t; -*- +;;; +;;; Commentary: +;;; Various resources were used to hack together this config: +;;; - https://sanemacs.com/ +;;; - https://rossabaker.com/configs/emacs/ +;;; +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;; +;;; Startup ;;; +;;;;;;;;;;;;;;;;;;;;;;; + +;;; Startup - Use package ;;; + +;; some packages complain if I don't have this +(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")) + +;;; Startup - Benchmarking ;;; + +(use-package benchmark-init + :ensure t + :demand t + :hook (after-init . benchmark-init/deactivate) + :config + (benchmark-init/activate)) + +;;; Startup - Garbage collection ;;; + +(use-package gcmh + :ensure t + :diminish + :init (setq gc-cons-threshold (* 80 1024 1024)) + :hook (emacs-startup . gcmh-mode)) + +;;; Startup - Better cache location ;;; +(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)))) + :config + (no-littering-theme-backups)) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Customization ;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Customization - General settings ;;; + +(use-package emacs + :init + (setq inhibit-startup-screen t + initial-scratch-message nil + initial-major-mode 'text-mode + ring-bell-function 'ignore + use-file-dialog nil) + + (tool-bar-mode -1) + (scroll-bar-mode -1) + + (setq-default cursor-type 'bar + frame-title-format '("%b") + ;; Use spaces, but configure tab-width for modes that use tabs + indent-tabs-mode nil + tab-width 2) + + (fset 'yes-or-no-p 'y-or-n-p) + (show-paren-mode 1) ; Show closing parens + (global-auto-revert-mode t) ; Auto-update buffer on file change + (setopt create-lockfiles nil) + (electric-pair-mode 1) ; Autopairs + (global-hl-line-mode) + + (defun mb/enable-line-numbers () + "Enable relative line numbers" + (interactive) + (display-line-numbers-mode) + (setq display-line-numbers 'relative)) + + (defun mb/enable-fill-column () + "Enable vertical ruler" + (interactive) + (setq fill-column 80) + (display-fill-column-indicator-mode)) + + (defun display-startup-echo-area-message () + (message "")) + + (global-display-line-numbers-mode) + + :hook ((prog-mode . mb/enable-line-numbers) + (prog-mode . mb/enable-fill-column)) + + :bind (("C-z" . undo) + ("C-S-z" . undo-redo) + ("C-x h" . previous-buffer) + ("C-x l" . next-buffer))) + +;;; Customization - Scrolling ;;; +;; TODO: Smooth scroll + +;;; Customization - Theme ;;; + +(use-package doom-themes + :demand + :config + ;; Global settings (defaults) + (setq doom-themes-enable-bold t ; if nil, bold is universally disabled + doom-themes-enable-italic t) ; if nil, italics is universally disabled + (load-theme 'doom-laserwave t)) + + +;;; Customization - Modeline ;;; +(use-package doom-modeline + :ensure t + :config (doom-modeline-mode 1)) + +(use-package nerd-icons + :custom + (nerd-icons-font-family "FiraCode Nerd Font Mono")) + +(use-package nyan-mode + :config (nyan-mode)) + +;;; Customization - Evil ;;; + +;; Set up vi keybinds +(use-package evil + :demand + :hook ((prog-mode . evil-local-mode) + (text-mode . evil-local-mode))) + +;;; Customization - Direnv support ;;; + +(use-package envrc + :ensure t + :hook (on-first-file . envrc-global-mode)) + +;;; Customziation - Completion framework ;;; + +(use-package helm + :config + (setq helm-completion-style 'emacs)) +(use-package helm-mode + :config + (helm-mode 1)) + +(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)) + +;;; Customization - Project management ;;; + +(use-package projectile + :bind-keymap ("C-c p" . projectile-command-map) + :config + (projectile-mode +1)) + +;;; Customization - Completions ;;; + +(use-package company + :hook (prog-mode . company-mode)) + +;;; Customization - Syntax checking ;;; + +(use-package flycheck + :hook (prog-mode . flycheck-mode)) + +;;; Customization - Which key ;;; + +(use-package which-key + :init + (setq which-key-idle-delay 0.1) + :config + (which-key-mode +1)) + +;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Languages ;;; +;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Languages - Nix ;;; + +(use-package nix-mode + :mode "\\.nix\\'") + +;;; Languages - Coq ;;; + +(use-package proof-general + :mode ("\\.v\\'" . coq-mode)) + + +;;; Languages - Rust ;;; +;; TODO + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Useful modes ;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Useful modes - magit ;;; + +(use-package magit) + +;;; emacs.el ends here -- cgit v1.3.1