aboutsummaryrefslogtreecommitdiff
path: root/share/home/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'share/home/emacs')
-rw-r--r--share/home/emacs/emacs.el16
-rw-r--r--share/home/emacs/flycheck_emacs.el222
2 files changed, 232 insertions, 6 deletions
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