commit 4cde9a9d760b790483898b853b1f41cd4f1327e1 Author: eriedaberrie Date: Fri Dec 16 10:27:53 2022 -0800 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32bc68d --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +* + +!.gitignore +!early-init.el +!init.el diff --git a/init.el b/init.el new file mode 100644 index 0000000..a083a60 --- /dev/null +++ b/init.el @@ -0,0 +1,508 @@ +;;; EMACS init file -*- lexical-binding:t -*- + +(require 'package) +(add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/")) +(package-initialize) + +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) +(setq use-package-always-ensure t + use-package-expand-minimally t) +(require 'use-package) + +(use-package gcmh + ;; :custom + ;; (gcmh-high-cons-threshold 40000000) + ;; (gcmh-high-cons-threshold most-positive-fixnum) + :config + (gcmh-mode)) + +(let ((emacs-tmp-dir (expand-file-name (format "emacs%d" (user-uid)) + temporary-file-directory))) + (setq auto-save-file-name-transforms `((".*" ,emacs-tmp-dir t)) + auto-save-list-file-prefix emacs-tmp-dir + backup-directory-alist (setq undo-tree-history-directory-alist + `((".*" . ,emacs-tmp-dir))) + org-preview-latex-image-directory (expand-file-name "ltximg" emacs-tmp-dir))) + +(setq backup-by-copying t + inhibit-splash-screen t + custom-file (expand-file-name "custom.el" user-emacs-directory)) +(when (file-readable-p custom-file) + (load custom-file)) + +(use-package auto-package-update + :custom + (auto-package-update-prompt-before-update t) + (auto-package-update-show-preview t) + (auto-package-update-delete-old-versions t) + :config + (auto-package-update-at-time "05:00")) + +(use-package undo-tree + :hook (evil-local-mode . turn-on-undo-tree-mode)) + +(use-package evil + :custom + (x-select-enable-clipboard nil "Disable automatic clipboard=unnamedplus") + (evil-want-keybinding nil "Necessary for evil-collection") + (evil-want-Y-yank-to-eol t "Make Y behave like it should") + (evil-want-C-u-scroll t "Scroll with C-u") + (evil-want-C-h-delete t "Delete with C-h") + (evil-want-C-w-in-emacs-state t "Allow C-w movement in Emacs windows") + (evil-undo-system 'undo-tree "Undo with undo-tree") + ;; :custom-face + ;; (evil-ex-lazy-highlight ((t (:foreground nil :inherit highlight)))) + :config + (evil-mode) + (evil-select-search-module 'evil-search-module 'evil-search) + (defadvice evil-force-normal-state (after evil-search-remove-hl activate) + (evil-ex-nohighlight)) + (evil-global-set-key 'insert (kbd "C-S-h") #'help-command)) + +(use-package evil-collection + :after evil + :custom + (evil-collection-setup-minibuffer t) + :config + (evil-collection-init)) + +(use-package evil-leader + :after evil + :config + (evil-leader/set-leader "") + (evil-leader/set-key + "u" #'universal-argument + "bb" #'switch-to-buffer + "bd" #'evil-delete-buffer + "fd" #'dirvish-dwim + "fq" #'dirvish-quit + "ff" #'find-file + "ft" #'treemacs + "fs" #'evil-write + "f'" #'bookmark-jump + "gg" #'magit-status + "mm" #'minimap-mode + "ps" #'auto-package-update-now + ;; "ps" (lambda () + ;; (interactive) + ;; (package-refresh-contents) + ;; (auto-package-update-now-async)) + "qq" #'evil-quit + "qk" #'kill-emacs) + (global-evil-leader-mode)) + +(use-package evil-surround + :after evil + :config + (global-evil-surround-mode)) + +(use-package evil-commentary + :after evil + :config + (evil-commentary-mode)) + +(use-package evil-numbers + :after evil + :config + (evil-define-key '(normal visual) 'global "g+" #'evil-numbers/inc-at-pt) + (evil-define-key '(normal visual) 'global "g-" #'evil-numbers/dec-at-pt) + (evil-define-key '(normal visual) 'global "g=+" #'evil-numbers/inc-at-pt-incremental) + (evil-define-key '(normal visual) 'global "g=-" #'evil-numbers/inc-at-pt-incremental)) + +(use-package evil-replace-with-register + :after evil + :custom + (evil-replace-with-register-indent t) + :config + (evil-replace-with-register-install)) + +(use-package evil-org + :after evil + :hook org-mode + :config + (require 'evil-org-agenda) + (evil-org-agenda-set-keys)) + +(use-package evil-goggles + :after evil + :custom + (evil-goggles-duration 0.12 "Decrease the duration a tiny bit") + (evil-goggles-pulse t) + :config + (evil-goggles-use-diff-faces) + (evil-goggles-mode)) + +(use-package evil-terminal-cursor-changer + :defer t) + +(use-package hydra + :config + (defhydra hydra-evil-c-w (evil-normal-state-map "C-w") + "C-w" + ("h" #'evil-window-left "left") + ("j" #'evil-window-down "down") + ("k" #'evil-window-up "up") + ("l" #'evil-window-right "right") + ("+" #'evil-window-increase-height "+height") + ("-" #'evil-window-decrease-height "-height") + (">" #'evil-window-increase-width "+width") + ("<" #'evil-window-decrease-width "-width"))) + +(use-package lispy + :after lispyville) + +(use-package lispyville + :hook (emacs-lisp-mode + eval-expression-minibuffer-setup + ielm-mode + lisp-mode + lisp-interaction-mode + scheme-mode + clojure-mode) + :config + (lispyville-set-key-theme + '(operators + c-w + slurp/barf-cp + commentary + text-objects + additional + additional-insert + mark + (prettify insert) + (escape insert emacs) + (additional-movement normal visual motion))) + (evil-define-key 'normal lispyville-mode-map (kbd "C-v") nil) + (evil-define-key 'insert lispyville-mode-map (kbd "DEL") #'lispy-delete-backward) + (evil-define-key 'insert lispyville-mode-map (kbd "C-h") #'lispy-delete-backward) + (evil-define-key 'insert lispyville-mode-map "(" #'lispy-parens) + (evil-define-key 'insert lispyville-mode-map ")" #'lispy-right-nostring) + (evil-define-key 'insert lispyville-mode-map "\"" #'lispy-quotes) + + (evil-define-key 'normal lispyville-mode-map ";" nil) + (evil-define-key 'normal lispyville-mode-map (kbd "C-;") #'lispy-comment) + (evil-define-key 'visual lispyville-mode-map "iF" #'special-lispy-flow)) + +(use-package company + :custom + (company-idle-delay 0.3) + :config + (define-key company-active-map (kbd "C-h") nil) + (define-key company-active-map (kbd "C-w") nil) + (define-key company-active-map (kbd "C-/") #'company-show-doc-buffer) + (define-key company-active-map (kbd "C-?") #'company-show-location) + (global-company-mode)) + +;; (use-package lsp-mode +;; :commands lsp-mode +;; :custom +;; (lsp-keymap-prefix nil) +;; (lsp-enable-indentation nil) +;; (read-process-output-max (* 1024 1024)) +;; :hook ((lsp-mode . evil-normalize-keymaps) +;; (lsp-mode . (lambda () +;; (let ((lsp-keymap-prefix "SPC e")) +;; (lsp-enable-which-key-integration))))) +;; :config +;; (evil-define-key 'normal lsp-mode-map (kbd "SPC e") lsp-command-map)) +;; ;; :hook (((c-mode java-mode) . lsp-deferred)) + +(use-package dtrt-indent + :config + (dtrt-indent-global-mode)) + +(use-package aggressive-indent + :config + ;; (add-to-list 'aggressive-indent-dont-indent-if + ;; '(member evil-state '(insert replace))) + (global-aggressive-indent-mode)) + +(use-package rainbow-delimiters + :hook prog-mode) + +(use-package tree-sitter + :hook (sh-mode + c-mode + c++-mode + css-mode + html-mode + java-mode + js-mode + perl-mode + python-mode + ruby-mode + (tree-sitter-after-on . tree-sitter-hl-mode))) +(use-package tree-sitter-langs + :defer t) + +(use-package which-key + :custom + (which-key-idle-delay 0.2) + :config + (which-key-mode)) + +(use-package orderless + :custom + (completion-styles '(orderless basic)) + (completion-category-defaults nil) + (completion-category-overrides '((file (styles partial-completion))))) + +(use-package marginalia + :bind (:map minibuffer-local-map + ("M-a" . marginalia-cycle)) + :init + (marginalia-mode)) + +(use-package vertico + :config + (evil-define-key 'insert minibuffer-local-map (kbd "C-j") #'vertico-next) + (evil-define-key 'insert minibuffer-local-map (kbd "C-k") #'vertico-previous) + (vertico-mode) + (vertico-mouse-mode)) + +(use-package yasnippet) +(use-package yasnippet-snippets) + +(use-package all-the-icons) + +(use-package all-the-icons-completion + :after (marginalia all-the-icons) + :hook (marginalia-mode . all-the-icons-completion-marginalia-setup) + :init + (all-the-icons-completion-mode)) + +(use-package treemacs) +(use-package treemacs-evil) +;; (use-package treemacs-icons-dired +;; :hook (dired-mode . treemacs-icons-dired-enable-once)) +(use-package treemacs-all-the-icons + :config + (treemacs-load-theme 'all-the-icons)) + +(use-package doom-modeline + :config + (doom-modeline-mode)) + +(use-package dirvish + :after dired + :custom + (dirvish-attributes '(all-the-icons)) + :config + (dirvish-override-dired-mode)) + +(use-package pdf-tools + :defer t + :mode (("\\.pdf\\'" . pdf-view-mode)) + :config + (pdf-tools-install)) + +(defun set-text-modes-font () + (interactive) + (setq buffer-face-mode-face '(:family "DejaVu Sans Mono" :height 115) + line-spacing 0.5) + (buffer-face-mode)) + +(use-package org + :defer t + :mode (("\\.org$" . org-mode)) + :hook ((org-mode . org-indent-mode) + (org-mode . flyspell-mode) + (org-mode . auto-fill-mode) + (org-mode . set-text-modes-font)) + :custom + (org-list-allow-alphabetical t) + :config + ;; (setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) + (defhydra hydra-org-evil-shiftmove (org-mode-map "C-c") + "S+arrows" + ("h" #'org-shiftleft "left") + ("j" #'org-shiftdown "down") + ("k" #'org-shiftup "up") + ("l" #'org-shiftright "right"))) + +(use-package org-superstar + :custom + (org-superstar-leading-bullet ?\s) + :hook org-mode) + +(use-package org-pdftools + :hook (org-mode . org-pdftools-setup-link)) + +(use-package editorconfig + :config + (editorconfig-mode)) + +(use-package json-mode + :defer t + :mode "\\.js\\(?:on\\|[hl]int\\(?:rc\\)?\\)\\'") + +(use-package minimap + :defer t + :commands minimap-mode + :custom-face + (minimap-active-region-background ((t (:background nil :inherit hl-line)))) + :hook ((minimap-sb-mode . evil-emacs-state) + (minimap-sb-mode . turn-on-solaire-mode))) + +(use-package magit) + +(use-package tramp + :defer t + :custom + (remote-file-name-inhibit-cache nil) + (tramp-verbose 1) + :config + (setq vc-ignore-dir-regexp (format "%s\\|%s" + vc-ignore-dir-regexp + tramp-file-name-regexp))) + +(use-package elfeed + :custom + (elfeed-feeds '(("https://archlinux.org/feeds/news/" arch-linux)))) + +;; (use-package md4rd +;; :custom +;; (md4rd-subs-active '(emacs archlinux)) +;; :config +;; (setq md4rd--oauth-access-token "373959726732-zbIE8PXPDdnYJrCLsSjAoVUm55Dg8g" +;; md4rd--oauth-refresh-token "373959726732-5jDpXKE4MImrDWNl7gfSPD3YT6862w") +;; (run-with-timer 0 3540 #'md4rd-refresh-login) +;; (evil-set-initial-state 'md4rd-mode 'emacs)) + +(use-package xkcd + :config + (evil-set-initial-state 'xkcd-mode 'emacs)) + +(use-package ligature + :hook (prog-mode + (ligature-mode . prettify-symbols-mode)) + :custom + (prettify-symbols-unprettify-at-point t) + :config + (ligature-set-ligatures 'prog-mode '("|||>" "<|||" "<==>" "" "---" "-<<" + "<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" + "<--" "<-<" "<<=" "<<-" "<<<" "<+>" "" "###" "#_(" "..<" + "..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~=" + "~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|" + "[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:" + ">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:" + "<$" "<=" "<>" "<-" "<<" "<+" "" "++" "?:" + "?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)" + "\\\\" "://"))) + +(use-package gruvbox-theme + :defer t) +(use-package catppuccin-theme + ;; :custom + ;; (catppuccin-use-24-bit-colors-on-256-colors-term t) + :defer t) + +(defun load-theme-with-solaire () + (load-theme 'catppuccin-macchiato t) + (solaire-global-mode) + (when (daemonp) + (remove-hook 'server-after-make-frame-hook #'load-theme-with-solaire))) + +(use-package solaire-mode + :custom + (solaire-mode-real-buffer-fn (lambda () + (and (solaire-mode-real-buffer-p) + (or (custom-theme-enabled-p 'gruvbox) + (not (member 'minimap-sb-mode + local-minor-modes)))))) + :config + (if (daemonp) + (add-hook 'server-after-make-frame-hook #'load-theme-with-solaire) + (load-theme-with-solaire))) + +(use-package emacs-everywhere + :load-path "~/emacs-everywhere" + :defer t + :commands emacs-everywhere) + +(use-package tool-bar + :ensure nil + :config + (tool-bar-mode 0)) +(use-package menu-bar + :ensure nil + :config + (menu-bar-mode 0)) +(use-package scroll-bar + :ensure nil + :config + (scroll-bar-mode 0)) + +(global-hl-line-mode) +(add-to-list 'default-frame-alist '(font . "JetbrainsMono Nerd Font-10.5")) +;; (add-to-list 'default-frame-alist '(font . "FiraCode Nerd Font-10.5")) + +(setcar mouse-wheel-scroll-amount 3) + +(setq server-client-instructions nil + scroll-step 1 + scroll-margin 3 + scroll-conservatively 9999 + read-file-name-completion-ignore-case t + read-buffer-completion-ignore-case t + completion-ignore-case t + sentence-end-double-space nil) + +(setq-default c-basic-offset 4 + tab-width 4 + fill-column 80) + +(defun relative-linenum () + (setq display-line-numbers 'relative)) +(dolist (hook '(prog-mode-hook + text-mode-hook + conf-mode-hook + org-mode-hook)) + (add-hook hook #'relative-linenum)) + +;; (set-face-attribute 'italic nil +;; :slant 'italic +;; :underline nil) + +(defun use-spaces-for-indent () + (setq indent-tabs-mode nil)) + +(add-hook 'emacs-lisp-mode-hook #'use-spaces-for-indent) +(add-hook 'lisp-mode-hook #'use-spaces-for-indent) +(add-hook 'scheme-mode-hook #'use-spaces-for-indent) +(add-hook 'clojure-mode-hook #'use-spaces-for-indent) + +(defun scroll-down-3 () + "Scrolls down by 3" + (interactive) + (scroll-down 3)) + +(defun scroll-up-3 () + "Scrolls up by 3" + (interactive) + (scroll-up 3)) + +(defun frame-make-detect-term (frame) + "Check when frames are made in order to make terminal-only configurations" + (unless (display-graphic-p frame) + (xterm-mouse-mode) + (global-set-key (kbd "") #'scroll-down-3) + (global-set-key (kbd "") #'scroll-up-3) + (etcc-on) + (setq after-make-frame-functions + (remove 'frame-make-detect-term after-make-frame-functions)))) + +(add-to-list 'after-make-frame-functions #'frame-make-detect-term) + +(add-to-list 'auto-mode-alist '("\\.yuck\\'" . lisp-mode)) + +;; (add-to-list 'default-frame-alist '(internal-border-width . 6)) + +(with-current-buffer "*scratch*" + (cd "~/"))