2024-10-03 20:26:12 -04:00
|
|
|
#+TITLE: Emacs Configuration
|
|
|
|
#+AUTHOR: Mars (@pupbrained)
|
|
|
|
#+EMAIL: mars@pupbrained.xyz
|
|
|
|
|
|
|
|
* Basic Setup
|
|
|
|
|
|
|
|
** Server
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(require 'bind-key)
|
|
|
|
(load "server")
|
|
|
|
(unless (server-running-p) (server-start))
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Disable Auto-Save and Backup
|
|
|
|
|
|
|
|
*** (I don't like having ~#file#~ and ~file~~ everywhere in my directories)
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(setq auto-save-default nil)
|
|
|
|
(setq make-backup-files nil)
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Enable Real Auto Save
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package real-auto-save
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(setq real-auto-save-interval 1)
|
|
|
|
(add-hook 'prog-mode-hook 'real-auto-save-mode))
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** No Scratch On Open
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(setq initial-scratch-message nil)
|
|
|
|
(setq initial-buffer-choice nil)
|
2024-10-04 19:01:46 -04:00
|
|
|
|
2024-10-03 20:26:12 -04:00
|
|
|
(add-hook 'emacs-startup-hook
|
|
|
|
(lambda ()
|
|
|
|
(when (and (get-buffer "*scratch*")
|
|
|
|
(not (eq (current-buffer) (get-buffer "*scratch*"))))
|
|
|
|
(kill-buffer "*scratch*"))))
|
|
|
|
#+end_src
|
|
|
|
|
2024-10-04 19:01:46 -04:00
|
|
|
** Dirvish
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package dirvish
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(dirvish-override-dired-mode)
|
|
|
|
(dirvish-side-follow-mode)
|
|
|
|
(setq dired-mouse-drag-files t)
|
|
|
|
(setq mouse-drag-and-drop-region-cross-program t))
|
|
|
|
|
|
|
|
;; Addtional syntax highlighting for dired
|
|
|
|
(use-package diredfl
|
|
|
|
:ensure t
|
|
|
|
:hook
|
|
|
|
((dired-mode . diredfl-mode)
|
|
|
|
(dirvish-directory-view-mode . diredfl-mode))
|
|
|
|
:config
|
|
|
|
(set-face-attribute 'diredfl-dir-name nil :bold t))
|
|
|
|
|
|
|
|
(use-package all-the-icons
|
|
|
|
:ensure t)
|
|
|
|
|
|
|
|
(use-package ns-auto-titlebar
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(when (eq system-type 'darwin) (ns-auto-titlebar-mode)))
|
|
|
|
#+end_src
|
|
|
|
|
2024-10-03 20:26:12 -04:00
|
|
|
** Fix Indents + Enable Autopairs
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(electric-indent-mode 1)
|
|
|
|
(electric-pair-mode 1)
|
|
|
|
(setq c-basic-offset 2)
|
|
|
|
(setq-default indent-tabs-mode nil)
|
|
|
|
|
|
|
|
(use-package evil
|
|
|
|
:ensure t
|
|
|
|
:init
|
|
|
|
(setq evil-split-window-below t)
|
|
|
|
(setq evil-undo-system 'undo-tree)
|
|
|
|
(setq evil-vsplit-window-right t)
|
|
|
|
(setq evil-want-C-i-jump nil)
|
|
|
|
(setq evil-want-C-u-scroll t)
|
|
|
|
(setq evil-want-integration t)
|
|
|
|
(setq evil-want-integration t)
|
|
|
|
(setq evil-want-keybinding nil)
|
|
|
|
:config
|
|
|
|
(evil-mode 1))
|
|
|
|
|
2024-10-04 19:01:46 -04:00
|
|
|
(use-package evil-collection
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(evil-collection-init))
|
|
|
|
|
|
|
|
(use-package evil-leader
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(global-evil-leader-mode)
|
|
|
|
(setq evil-leader/leader "<SPC>")
|
|
|
|
(evil-leader/set-key "a" #'eglot-code-actions)
|
|
|
|
(evil-leader/set-key "bd" #'kill-this-buffer)
|
|
|
|
(evil-leader/set-key "e" #'dirvish-side))
|
|
|
|
|
2024-10-03 20:26:12 -04:00
|
|
|
(use-package eglot
|
|
|
|
:hook (emacs-lisp-mode . eglot-ensure))
|
|
|
|
|
|
|
|
(use-package catppuccin-theme
|
|
|
|
:ensure t
|
|
|
|
:demand t
|
|
|
|
:config
|
|
|
|
(load-theme 'catppuccin t))
|
|
|
|
|
|
|
|
(setq auto-save-default nil)
|
|
|
|
(setq make-backup-files nil)
|
|
|
|
#+end_src
|
2024-10-04 19:01:46 -04:00
|
|
|
|
|
|
|
** Rainbow Delimiters
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package rainbow-delimiters
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode))
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Disable Bars
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(menu-bar-mode -1)
|
|
|
|
(scroll-bar-mode -1)
|
|
|
|
(tool-bar-mode -1)
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Line Numbers
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(global-display-line-numbers-mode t)
|
|
|
|
|
|
|
|
(setq display-line-numbers-type 'relative)
|
|
|
|
|
|
|
|
(dolist (mode '(term-mode-hook
|
|
|
|
vterm-mode-hook
|
|
|
|
shell-mode-hook
|
|
|
|
dirvish-setup-hook
|
|
|
|
eshell-mode-hook))
|
|
|
|
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Vim-Style Scrolling
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(setq scroll-step 3
|
|
|
|
scroll-conservatively 9999)
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** System-Specific Settings
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(cond
|
|
|
|
((eq system-type 'darwin)
|
|
|
|
(setq default-frame-alist '((font . "Iosevka Comfy-14"))))
|
|
|
|
((eq system-type 'gnu/linux)
|
|
|
|
(setq default-frame-alist '((font . "Maple Mono NF-12")
|
|
|
|
(undecorated . t)))))
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Use Short Answers
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(setq use-short-answers t)
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Undo Tree
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package undo-tree
|
|
|
|
:ensure t
|
|
|
|
:demand t
|
|
|
|
:config
|
|
|
|
(global-undo-tree-mode)
|
|
|
|
(setq undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo"))))
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
** Dashboard
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package dashboard
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(dashboard-setup-startup-hook)
|
|
|
|
(setq dashboard-startup-banner 'logo)
|
|
|
|
(setq dashboard-center-content t)
|
|
|
|
(setq dashboard-vertically-center-content t)
|
|
|
|
(setq dashboard-startup-banner 'logo)
|
|
|
|
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))
|
|
|
|
(setq recentf-exclude '("~/.emacs.d/.cache/treemacs-persist")))
|
|
|
|
#+end_src
|
|
|
|
|