aboutsummaryrefslogtreecommitdiff
path: root/share/home
diff options
context:
space:
mode:
authorMiran Bastaja <miran.bastaja04@gmail.com>2023-12-29 13:36:01 +0100
committerMiran Bastaja <miran.bastaja04@gmail.com>2023-12-29 13:36:01 +0100
commit5bd1e36d80d00f84193f059a186716762729eccf (patch)
treeabd179ae42eaf3627d870f5347442e0a6cd93f05 /share/home
parent695a920a43a0317221e590038ac135d9dd7cdb7c (diff)
emacs: general config improvements
Diffstat (limited to 'share/home')
-rw-r--r--share/home/emacs/default.nix17
-rw-r--r--share/home/emacs/emacs.el42
-rw-r--r--share/home/emacs/flycheck_emacs.el222
3 files changed, 41 insertions, 240 deletions
diff --git a/share/home/emacs/default.nix b/share/home/emacs/default.nix
index 37ec96b..22f6ee7 100644
--- a/share/home/emacs/default.nix
+++ b/share/home/emacs/default.nix
@@ -10,9 +10,18 @@ in
{
home.packages = [ my-emacs ];
- xdg.configFile.emacs-early-init = {
- enable = true;
- target = "emacs/early-init.el";
- source = ./early-init.el;
+ xdg.configFile = {
+ emacs-init = {
+ enable = true;
+ target = "emacs/init.el";
+ text = ''
+ (setq inhibit-startup-screen t)
+ '';
+ };
+ emacs-early-init = {
+ enable = true;
+ target = "emacs/early-init.el";
+ source = ./early-init.el;
+ };
};
}
diff --git a/share/home/emacs/emacs.el b/share/home/emacs/emacs.el
index 31512c8..7810bef 100644
--- a/share/home/emacs/emacs.el
+++ b/share/home/emacs/emacs.el
@@ -84,12 +84,6 @@
(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)
@@ -99,11 +93,7 @@
(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))
-
+ :hook (prog-mode . mb/enable-fill-column)
:bind (("C-z" . undo)
("C-S-z" . undo-redo)
("C-x h" . previous-buffer)
@@ -140,8 +130,17 @@
;; Set up vi keybinds
(use-package evil
:demand
+ :init
+ (defun mb/enable-line-numbers ()
+ "Enable relative line numbers"
+ (interactive)
+ (display-line-numbers-mode)
+ (setq display-line-numbers 'relative))
+
:hook ((prog-mode . evil-local-mode)
- (text-mode . evil-local-mode)))
+ (text-mode . evil-local-mode)
+ (evil-mode . mb/enable-line-numbers)
+ (evil-local-mode . mb/enable-line-numbers)))
;;; Customization - Direnv support ;;;
@@ -154,6 +153,7 @@
(use-package helm
:config
(setq helm-completion-style 'emacs))
+
(use-package helm-mode
:config
(helm-mode 1))
@@ -193,6 +193,12 @@
:config
(which-key-mode +1))
+;;; Customization - LSP support ;;;
+
+(use-package eglot
+ ; nix-mode doesn't have a hook for some reason
+ :mode ("\\.nix\\'" "\\.nix.in\\'"))
+
;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Languages ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -200,7 +206,7 @@
;;; Languages - Nix ;;;
(use-package nix-mode
- :mode "\\.nix\\'")
+ :mode ("\\.nix\\'" "\\.nix.in\\'"))
;;; Languages - Coq ;;;
@@ -209,7 +215,15 @@
;;; Languages - Rust ;;;
-;; TODO
+
+(use-package rustic
+ :init
+ (setq rustic-lsp-client 'eglot)
+ (defun rustic-mode-auto-save-hook ()
+ "Enable auto-saving in rustic-mode buffers."
+ (when buffer-file-name
+ (setq-local compilation-ask-about-save nil)))
+ :hook (rustic-mode . rustic-mode-auto-save-hook))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Useful modes ;;;
diff --git a/share/home/emacs/flycheck_emacs.el b/share/home/emacs/flycheck_emacs.el
deleted file mode 100644
index 31512c8..0000000
--- a/share/home/emacs/flycheck_emacs.el
+++ /dev/null
@@ -1,222 +0,0 @@
-;;; 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