(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)