blob: 1a7e33d0fa277a7801bcee7acccb1fdf3b963e91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
;; Time-stamp: <2022-06-03 09h28 CDT (radix)>
;; ----------------------------------------------------------------------------
;; Lisp helpers
(defvar lh-pairs '(("(" . ")")
("[" . "]")
("{" . "}")
("<" . ">")
("\"" . "\"")))
(defun lh-forward-delim ()
(interactive)
(save-match-data
(re-search-forward
(regexp-opt (mapcar #'cdr lh-pairs)))))
(defun lh-backward-delim ()
(interactive)
(save-match-data
(re-search-backward
(regexp-opt (mapcar #'car lh-pairs)))))
(defun lh-matching-delim ()
(interactive)
(cond
((looking-at (regexp-opt (mapcar #'car lh-pairs)))
(forward-sexp))
((looking-back (regexp-opt (mapcar #'cdr lh-pairs)) nil)
(backward-sexp))
(t (backward-up-list 1 t t))))
(defun lh-slurp-forward ()
(interactive)
(corral-shift-forward ?\( ?\)))
(defun lh-slurp-backward ()
(interactive)
(corral-shift-backward ?\( ?\)))
(defun lh-open-parentheses-dwim (arg)
(interactive "P")
(if (or (= (line-beginning-position) (point))
(looking-at "\\Sw")) (insert-parentheses arg)
(backward-sexp)
(insert-parentheses 1)))
(defun lh-end-of-defun (arg)
(interactive "P")
(end-of-defun arg)
(re-search-backward ")")
(forward-char))
(defun lh-avy-open-paren ()
(interactive)
(avy-goto-char ?\( ))
(defun lh-avy-close-paren ()
(interactive)
(avy-goto-char ?\) ))
(use-package corral :ensure t)
(defun make-lisp-bindings ()
(let ((map (eval (read (format "%s-map" major-mode)))))
(progn
(require 'corral)
(define-key map (kbd "M-e") 'forward-sexp)
(define-key map (kbd "M-a") 'backward-sexp)
(define-key map (kbd "M-,") 'lh-backward-delim)
(define-key map (kbd "M-.") 'lh-forward-delim)
(define-key map (kbd "M-/") 'lh-matching-delim)
(define-key map (kbd "C-c (") 'lh-avy-open-paren)
(define-key map (kbd "C-c )") 'lh-avy-close-paren)
(define-key map (kbd "(") 'lh-open-parentheses-dwim)
(define-key map (kbd "C-c r") 'raise-sexp)
(define-key map (kbd "C-k") 'kill-sexp)
(define-key map (kbd "M-(") 'corral-parentheses-forward)
(define-key map (kbd "M-)") 'corral-parentheses-backward)
(define-key map (kbd "M-{") 'corral-braces-forward)
(define-key map (kbd "M-}") 'corral-braces-backward)
(define-key map (kbd "M-[") 'corral-brackets-forward)
(define-key map (kbd "M-]") 'corral-brackets-backward)
(define-key map (kbd "C-)") 'lh-slurp-forward)
(define-key map (kbd "C-(") 'lh-slurp-backward)
(define-key map (kbd "M-p") 'beginning-of-defun)
(define-key map (kbd "M-n") 'lh-end-of-defun)
t)))
;; ----------------------------------------------------------------------------
;; Mode configurations
;; (use-package rainbow-blocks :ensure t)
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(eldoc-mode)
(aggressive-indent-mode)
(make-lisp-bindings)))
(use-package caps-lock-mode
:load-path "~/.emacs.d/scripts/")
;; (use-package slime-company
;; :ensure t :defer t)
|