summaryrefslogtreecommitdiff
path: root/lisp/init-elisp.el
blob: a1cc59225a288774b6cf87b96da1cc7787323011 (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

(autoload 'enable-paredit-mode "paredit"
  "Turn on pseudo-structural editing of Lisp code."
  t)

(add-hook 'emacs-lisp-mode-hook 'enable-paredit-mode)

(after 'paredit
  (define-key paredit-mode-map (kbd "C-,")
    (defhydra hydra-paredit ()
      "
_a_: beginning of defun  _j_: forward slurp
_f_: forward             _k_: forward barf
_b_: backward            _u_: backward slurp
_p_: backward down       _i_: backward barf
_n_: forward up
_d_: forward down        _w_: copy as kill
_v_: backward up         _q_: indent sexp

_c_: convolute sexp      _l_: split sexp
_r_: raise               _o_: join sexp
_s_: splice sexp
_R_: wrap round
"
      ("j" paredit-forward-slurp-sexp nil)
      ("k" paredit-forward-barf-sexp nil)
      ("u" paredit-backward-slurp-sexp nil)
      ("i" paredit-backward-barf-sexp nil)

      ("a" beginning-of-defun nil)
      ("f" paredit-forward nil)
      ("b" paredit-backward nil)
      ("p" paredit-backward-down nil)
      ("n" paredit-forward-up nil)
      ("d" paredit-forward-down nil)
      ("v" paredit-backward-up nil)

      ("c" paredit-convolute-sexp nil)
      ("r" paredit-raise-sexp nil)
      ("s" paredit-splice-sexp nil)
      ("R" paredit-wrap-round nil)

      ("l" paredit-split-sexp nil)
      ("o" paredit-join-sexps nil)

      ("w" paredit-copy-as-kill nil)

      ("q" indent-pp-sexp nil)))

  ;; Don't let `paredit-splice-sexp' override default 'M-s' map.
  (define-key paredit-mode-map (kbd "M-s") nil)
  (define-key paredit-mode-map (kbd "M-p") 'paredit-splice-sexp))

(provide 'init-elisp)