git.fiddlerwoaroof.com
Browse code

refactor(emacs,evil): redo smartparens keybindings as a keymap

Edward Langley authored on 22/12/2022 07:28:42
Showing 1 changed files
... ...
@@ -1,8 +1,8 @@
1
-(defun wrap-with-doublequote (&optional arg)
1
+(defun fwoar:wrap-with-doublequote (&optional arg)
2 2
   (interactive "P")
3 3
   (sp-wrap-with-pair "\""))
4 4
 
5
-(defun wrap-in-dollar-brace
5
+(defun fwoar:wrap-in-dollar-brace
6 6
     (&optional arg)
7 7
   (interactive "P")
8 8
   (sp-wrap-with-pair "${"))
... ...
@@ -67,90 +67,64 @@
67 67
   :config
68 68
   (global-evil-surround-mode))
69 69
 
70
+(define-keymap :prefix 'fwoar:smartparens-map
71
+  ;; wrapping
72
+  "W" #'sp-wrap-round
73
+  "C-W" #'sp-wrap-round
74
+  "w" (define-keymap :prefix 'fwoar:smartparens-wrap-map
75
+        "(" #'sp-wrap-round
76
+        ")" #'sp-wrap-round
77
+
78
+        "{" #'sp-wrap-curly
79
+        "}" #'sp-wrap-curly
80
+
81
+        "[" #'sp-wrap-square
82
+        "]" #'sp-wrap-square
83
+
84
+        "\"" #'fwoar:wrap-with-doublequote
85
+        "$" #'fwoar:wrap-in-dollar-brace)
86
+
87
+  ;; narrowing
88
+  "n" (define-keymap :prefix 'fwoar:smartparens-narrow-map
89
+        "(" #'sp-narrow-to-sexp
90
+        ")" #'sp-narrow-to-sexp
91
+        "d" #'narrow-to-defun
92
+        "n" #'narrow-to-defun
93
+        "r" #'narrow-to-region
94
+        "w" #'widen)
95
+
96
+  ;; splicing
97
+  "S" #'sp-splice-sexp
98
+  "A" #'sp-splice-sexp-killing-backward
99
+  "D" #'sp-splice-sexp-killing-forward
100
+  "F" #'sp-splice-sexp-killing-around
101
+
102
+  ;; paren manipulation
103
+  "," #'sp-backward-barf-sexp
104
+  "." #'sp-forward-barf-sexp
105
+  "<" #'sp-backward-slurp-sexp
106
+  ">" #'sp-forward-slurp-sexp
107
+
108
+  ;; misc
109
+
110
+  "~" 'sp-convolute-sexp
111
+  "a" 'sp-absorb-sexp
112
+  "e" 'sp-emit-sexp
113
+  "`" 'sp-clone-sexp
114
+  "J" 'sp-join-sexp
115
+  "|" 'sp-split-sexp)
116
+
117
+
70 118
 (use-package evil-smartparens
71 119
   :ensure t
72 120
   :delight
73 121
   :after evil smartparens
74 122
   :config
123
+
75 124
   (evil-smartparens-mode 1)
76 125
 
77
-  (progn ;; wrapping
78
-    (evil-define-key 'normal 'global (kbd ",W") 'sp-wrap-round)
79
-    (evil-define-key 'normal 'global  (kbd "C-, W") 'sp-wrap-round)
80
-    (evil-define-key 'normal 'global  (kbd "C-, C-W") 'sp-wrap-round)
81
-
82
-    (evil-define-key 'normal 'global (kbd ",w(") 'sp-wrap-round)
83
-    (evil-define-key 'normal 'global (kbd ",w)") 'sp-wrap-round)
84
-    (define-key global-map (kbd "C-, (") 'sp-wrap-round)
85
-    (define-key global-map (kbd "C-, C-(") 'sp-wrap-round)
86
-    (define-key global-map (kbd "C-, )") 'sp-wrap-round)
87
-    (define-key global-map (kbd "C-, C-)") 'sp-wrap-round)
88
-
89
-    (evil-define-key 'normal 'global (kbd ",w$") 'wrap-in-dollar-brace)
90
-    (evil-define-key 'normal 'global  (kbd "C-, $") 'wrap-in-dollar-brace)
91
-    (evil-define-key 'normal 'global (kbd ",w{") 'sp-wrap-curly)
92
-    (evil-define-key 'normal 'global (kbd ",w}") 'sp-wrap-curly)
93
-    (define-key global-map (kbd "C-, {") 'sp-wrap-curly)
94
-    (define-key global-map (kbd "C-, C-{") 'sp-wrap-curly)
95
-    (define-key global-map (kbd "C-, }") 'sp-wrap-curly)
96
-    (define-key global-map (kbd "C-, C-}") 'sp-wrap-curly)
97
-    (define-key global-map (kbd "C-, w {") 'sp-wrap-curly)
98
-    (define-key global-map (kbd "C-, w }") 'sp-wrap-curly)
99
-
100
-    (evil-define-key 'normal 'global (kbd ",w[") 'sp-wrap-square)
101
-    (evil-define-key 'normal 'global (kbd ",w]") 'sp-wrap-square)
102
-    (define-key global-map (kbd "C-, w [") 'sp-wrap-square)
103
-    (define-key global-map (kbd "C-, <escape>") 'sp-wrap-square)
104
-    (define-key global-map (kbd "C-, [") 'sp-wrap-square)
105
-    (define-key global-map (kbd "C-, w ]") 'sp-wrap-square)
106
-    (define-key global-map (kbd "C-, C-]") 'sp-wrap-square)
107
-    (define-key global-map (kbd "C-, ]") 'sp-wrap-square)
108
-
109
-    (evil-define-key 'normal 'global (kbd ",w\"") 'wrap-with-doublequote)
110
-    (comment (define-key cider-mode-map (kbd "C-, w \"") 'sp-wrap-doublequote)))
111
-
112
-  (progn ;; splicing
113
-    (evil-define-key 'normal 'global (kbd ",S") 'sp-splice-sexp)
114
-    (comment (define-key cider-mode-map (kbd "C-, S") 'sp-splice-sexp)
115
-             (define-key cider-mode-map (kbd "C-, C-S") 'sp-splice-sexp))
116
-    (evil-define-key 'normal 'global (kbd ",A") 'sp-splice-sexp-killing-backward)
117
-    (comment (define-key cider-mode-map (kbd "C-, A") 'sp-splice-sexp-killing-backward)
118
-             (define-key cider-mode-map (kbd "C-, C-A") 'sp-splice-sexp-killing-backward))
119
-    (evil-define-key 'normal 'global (kbd ",D") 'sp-splice-sexp-killing-forward)
120
-    (comment (define-key cider-mode-map (kbd "C-, D") 'sp-splice-sexp-killing-forward)
121
-             (define-key cider-mode-map (kbd "C-, C-D") 'sp-splice-sexp-killing-forward))
122
-    (evil-define-key 'normal 'global (kbd ",F") 'sp-splice-sexp-killing-around)
123
-    (comment (define-key cider-mode-map (kbd "C-, F") 'sp-splice-sexp-killing-around)
124
-             (define-key cider-mode-map (kbd "C-, C-F") 'sp-splice-sexp-killing-around)))
125
-
126
-  (progn ;; barf/slurp
127
-    (evil-define-key 'normal 'global (kbd ",,") 'sp-backward-barf-sexp)
128
-    (comment (define-key cider-mode-map (kbd "C-, ,") 'sp-backward-barf-sexp)
129
-             (define-key cider-mode-map (kbd "C-, C-,") 'sp-backward-barf-sexp))
130
-    (evil-define-key 'normal 'global (kbd ",.") 'sp-forward-barf-sexp)
131
-    (comment (define-key cider-mode-map (kbd "C-, .") 'sp-forward-barf-sexp)
132
-             (define-key cider-mode-map (kbd "C-, C-.") 'sp-forward-barf-sexp))
133
-    (evil-define-key 'normal 'global (kbd ",<") 'sp-backward-slurp-sexp)
134
-    (comment (define-key cider-mode-map (kbd "C-, <") 'sp-backward-slurp-sexp)
135
-             (define-key cider-mode-map (kbd "C-, C-<") 'sp-backward-slurp-sexp))
136
-    (evil-define-key 'normal 'global (kbd ",>") 'sp-forward-slurp-sexp)
137
-    (comment (define-key cider-mode-map (kbd "C-, >") 'sp-forward-slurp-sexp)
138
-             (define-key cider-mode-map (kbd "C-, C->") 'sp-forward-slurp-sexp)))
139
-
140
-  (progn ;; misc
141
-    (evil-define-key 'normal 'global (kbd ",~") 'sp-convolute-sexp)
142
-    (evil-define-key 'normal 'global (kbd ",a") 'sp-absorb-sexp)
143
-    (evil-define-key 'normal 'global (kbd ",e") 'sp-emit-sexp)
144
-    (evil-define-key 'normal 'global (kbd ",`") 'sp-clone-sexp)
145
-    (evil-define-key 'normal 'global (kbd ",J") 'sp-join-sexp)
146
-    (evil-define-key 'normal 'global (kbd ",|") 'sp-split-sexp))
147
-
148
-  (progn ;; narrowing
149
-    (evil-define-key 'normal 'global (kbd "<leader>n(") 'sp-narrow-to-sexp)
150
-    (evil-define-key 'normal 'global (kbd "<leader>n)") 'sp-narrow-to-sexp)
151
-    (evil-define-key 'normal 'global (kbd "<leader>nn") 'narrow-to-defun)
152
-    (evil-define-key 'normal 'global (kbd "<leader>nr") 'narrow-to-region)
153
-    (evil-define-key 'normal 'global (kbd "<leader>nw") 'widen)))
126
+  (define-key global-map (kbd "C-,") 'fwoar:smartparens-map)
127
+  (evil-define-key 'normal 'global (kbd ",") 'fwoar:smartparens-map))
154 128
 
155 129
 (defun fwoar/setup-evil-collection-for-mode (mode)
156 130
   (evil-collection-require mode)