git » emacs.d.git » master » tree

[master] / init.el

(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-version 6))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

(straight-use-package 'use-package)

(use-package straight
	     :custom
	     (straight-use-package-by-default t))

(use-package emacs
  :custom
  (auto-save-default t)
  (auto-save-interval 200)
  (auto-save-timeout 10)
  (c-basic-offset 2)
  (completion-cycle-threshold 3)
  (custom-file (expand-file-name "custom.el" user-emacs-directory))
  (diff-switches "-u -w")
  (global-display-line-numbers-mode t)
  (indent-tabs-mode nil)
  (inhibit-splash-screen t)
  (initial-major-mode 'fundamental-mode)
  (initial-scratch-message nil)
  (ispell-program-name "aspell")
  (js-indent-level 2)
  (linum-format "%d ")
  (lisp-indent-offset t)
  (menu-bar-mode t)
  (sh-basic-offset 2)
  (tab-always-indent 'complete)
  (tab-width 2)
  (tool-bar-mode nil)
  (truncate-partial-width-windows nil)
  (visual-bell t)
  (warning-minimum-level :emergency)
  (whitespace-style '(trailing lines space-before-tab face indentation space-after))
  (x-select-enable-clipboard t)
  (x-select-enable-primary t)
  :config
  (auto-compression-mode t)
  (blink-cursor-mode 1)
  (column-number-mode 1)
  (delete-selection-mode t)
  (electric-pair-mode 1)
  (fset 'yes-or-no-p 'y-or-n-p)
  (global-visual-line-mode 1)
  (dolist (f '(try-expand-line try-expand-list))
    (delq f hippie-expand-try-functions-list))
  (display-line-numbers-mode 1)
  (recentf-mode 1)
  (show-paren-mode t)
  (winner-mode 1)
  (visual-line-mode 1)
  :bind (("M-/" . hippie-expand)))

(defvar local/leader "C-o" "Prefix to use for user commands.")

(defun local/set-key (keys command)
  (when (functionp (lookup-key (current-global-map) (kbd local/leader)))
    (global-unset-key (kbd local/leader)))
  (global-set-key
   (kbd (concat local/leader " " keys))
   command))

(use-package clojure-mode)

(use-package consult)

(use-package embark)

(use-package orderless
  :custom
  (completion-styles '(orderless basic))
  (completion-category-overrides '((file (styles basic partial-completion)))))

(use-package ace-window)

(use-package avy)

(use-package csv-mode)

(use-package flycheck)

(use-package js2-mode)

(use-package lsp-mode
  :hook ((c-mode . lsp)
         (clojure-mode . lsp))
  :commands lsp)

(use-package lsp-treemacs)

(use-package lsp-ui
  :commands
  lsp-ui-mode)

(use-package magit)

(use-package markdown-mode
  :config
  (markdown-toggle-wiki-links 1))

(use-package projectile)

(use-package slime)

(use-package yasnippet)

(use-package dumb-jump
  :init
  (add-hook 'xref-backend-functions 'dumb-jump-xref-activate))

(use-package idle-highlight-mode
  :hook ((prog-mode . idle-highlight-mode))
  :custom
  (idle-highlight-idle-time 0.1))

(use-package paredit)

(use-package wgrep
  :custom
  (wgrep-auto-save-buffer t))

(use-package color-theme-sanityinc-tomorrow
  :disabled t
  :config
  (load-theme 'sanityinc-tomorrow-blue t)
  (set-face-background 'region "white")
  (set-face-background 'region "blue"))

(defvar local/sexp-keymap
  (let ((keymap (make-keymap)))
    (define-key keymap (kbd "(") 'paredit-wrap-round)
    (define-key keymap (kbd "[") 'paredit-wrap-square)
    (define-key keymap (kbd "{") 'paredit-wrap-curly)
    (define-key keymap (kbd ">") 'paredit-forward-slurp-sexp)
    (define-key keymap (kbd "<") 'paredit-backward-barf-sexp)
    (define-key keymap (kbd "-") 'paredit-backward-slurp-sexp)
    (define-key keymap (kbd "+") 'paredit-forward-barf-sexp)
    (define-key keymap (kbd "|") 'paredit-split-sexp)
    (define-key keymap (kbd "^") 'paredit-raise-sexp)
    (define-key keymap (kbd "j") 'paredit-join-sexp)
    (define-key keymap (kbd "?") 'paredit-convolute-sexp)
    keymap))

(defalias 'local/sexp-keymap local/sexp-keymap)

(local/set-key "C-s" 'local/sexp-keymap)

(defun local/save ()
  (interactive)
  (clipboard-kill-ring-save nil nil t)
  (meow-save))

(use-package meow
  :config
  (setq meow-cheatsheet-layout meow-cheatsheet-layout-colemak)
  (meow-motion-overwrite-define-key
   '("e" . meow-prev)
   '("<escape>" . ignore))
  (meow-leader-define-key
   '("SPC" . execute-extended-command)
   '("a" . avy-goto-line)
   '("." . embark-act)
   '("e" . meow-page-up)
   '("F" . consult-find)
   '("G" . magit-status)
   '("o" . meow-keypad-start)
   '("?" . meow-cheatsheet)
   '("p" . meow-page-mode)
   '("R" . consult-git-grep)
   '("r" . consult-recent-file)
   '("s" . meow-sexp-mode)
   '("E" . "H-e")
   '("1" . meow-digit-argument)
   '("2" . meow-digit-argument)
   '("3" . meow-digit-argument)
   '("4" . meow-digit-argument)
   '("5" . meow-digit-argument)
   '("6" . meow-digit-argument)
   '("7" . meow-digit-argument)
   '("8" . meow-digit-argument)
   '("9" . meow-digit-argument)
   '("0" . meow-digit-argument))
  (meow-normal-define-key
   '("0" . meow-expand-0)
   '("1" . meow-expand-1)
   '("2" . meow-expand-2)
   '("3" . meow-expand-3)
   '("4" . meow-expand-4)
   '("5" . meow-expand-5)
   '("6" . meow-expand-6)
   '("7" . meow-expand-7)
   '("8" . meow-expand-8)
   '("9" . meow-expand-9)
   '("-" . negative-argument)
   '(";" . meow-reverse)
   '("," . meow-inner-of-thing)
   '("." . meow-bounds-of-thing)
   '("[" . meow-beginning-of-thing)
   '("]" . meow-end-of-thing)
   '("/" . meow-visit)
   '("a" . meow-append)
   '("A" . meow-open-below)
   '("b" . meow-back-word)
   '("B" . meow-back-symbol)
   '("c" . meow-change)
   '("d" . meow-delete)
   '("e" . meow-prev)
   '("E" . meow-prev-expand)
   '("f" . meow-find)
   '("g" . meow-cancel-selection)
   '("G" . meow-grab)
   '("h" . meow-left)
   '("H" . meow-left-expand)
   '("i" . meow-right)
   '("I" . meow-right-expand)
   '("j" . meow-join)
   '("k" . meow-kill)
   '("l" . meow-line)
   '("L" . meow-goto-line)
   '("m" . meow-mark-word)
   '("M" . meow-mark-symbol)
   '("n" . meow-next)
   '("N" . meow-next-expand)
   '("o" . meow-block)
   '("O" . meow-to-block)
   '("p" . meow-yank)
   '("q" . meow-quit)
   '("r" . meow-replace)
   '("s" . meow-insert)
   '("S" . meow-open-above)
   '("t" . meow-till)
   '("u" . meow-undo)
   '("U" . meow-undo-in-selection)
   '("v" . meow-search)
   '("w" . meow-next-word)
   '("W" . meow-next-symbol)
   '("x" . meow-delete)
   '("X" . meow-backward-delete)
   '("y" . local/save)
   '("z" . meow-pop-selection)
   '("'" . repeat)
   '("<escape>" . ignore))
  (setq meow-page-keymap (make-keymap))
  (meow-define-state page
                     "meow state for paging up/down"
                     :lighter " [P]"
                     :keymap meow-page-keymap)
  (meow-define-keys 'page
                    '("<escape>" . meow-normal-mode)
                    '("n" . meow-page-down)
                    '("e" . meow-page-up))
  (setq meow-sexp-keymap (make-keymap))
  (meow-define-state sexp
                     "meow state for sexp"
                     :lighter " [S]"
                     :keymap meow-sexp-keymap)
  (setq meow-cursor-type-sexp 'hollow)
  (meow-define-keys 'sexp
                    '("<escape>" . meow-normal-mode)
                    '("(" . paredit-wrap-round)
                    '("[" . paredit-wrap-square)
                    '("{" . paredit-wrap-curly)
                    '(">" . paredit-forward-slurp-sexp)
                    '("<" . paredit-forward-barf-sexp)
                    '("-" . paredit-backward-slurp-sexp)
                    '("+" . paredit-backward-barf-sexp)
                    '("," . paredit-splice-sexp)
                    '("|" . paredit-split-sexp)
                    '("^" . paredit-raise-sexp)
                    '("j" . paredit-join-sexps)
                    '("?" . paredit-convolute-sexp)
                    '("t" . meow-transpose-sexp)
                    '("u" . meow-undo))
  (meow-global-mode 1))
(put 'downcase-region 'disabled nil)